تبدیل عدد به حروف در جاوا اسکریپت
بدیل عدد به حروف در جاوا اسکریپت یکی از کاربردیترین مباحث این زبان برنامه نویسی است که برای برنامههای مختلف به درد میخورد؛ خصوصا تبدیل عدد به حروف فارسی در جاوا اسکریپت که در طراحی سایتهای فارسی زبان برای نمایش مبلغ، مقدار یا هر نوع عددی دیگری به کار میرود. در این مقاله قصد داریم نحوهی تبدیل عدد به حروف در javascript را به طور کامل برای شما شرح دهیم و با ارائهی مثالهای کاربردی به شما کمک کنیم تا نحوهی اجرای آن را به سادهترین روش یاد بگیرید. اما قبل از هر چیز بد نیست نگاهی کوتاه به ساختار دادهای اعداد و حروف در برنامه نویسی جاوا اسکریپت و تفاوت این دو نوع دادهای بیاندازیم.همچنین در وب سایت سبزلرن یک دوره کاملا رایگان اموزش جاوا اسکریپت وجود دارد که میتوانید از ان استفاده کنید .
یکی از مزیتهای زبان جاوا اسکریپت این است که هر نوع ساختار عددی اعم از صحیح یا اعشاری، در این زبان از نوع دادهای number به تعریف میشوند و نیازی نیست که هر نوع عددی را جداگانه مشخص کنیم. فرم نوشتاری اعداد در جاوا اسکریپت به صورت دهدهی یا نماد علمی است و تا 15 رقم را پشتیبانی میکند. مثال:
var x = 3.14; // A number with decimals
var y = 3; // A number without decimals
var x = 123e5; // 12300000
برای رشتهها مشابه بسیاری از زبانهای دیگر، حروف توسط نوع دادهای رشته تعریف میشوند و برای نمایش آن کافی است از علامت دابل کوتیشن (“”) یا تک کوتیشن (‘ ‘) استفاده کنید.
Var txt = “ ASDFGH”;
اکنون که با انواع دادههای حرفی و عددی در جاوا اسکریپت آشنا شدید، ببینیم که تبدیل عدد به حروف در javascript چطور انجام میشود. برای تبدیل عدد به حروف در جاوا اسکریپت، باید از تابع fromCharCode() استفاده کرد. این متد در جاوا اسکریپت، برای تبدیل اعداد یونیکد به کاراکتر به کار میرود. سینتکس استفاده از کد جاوا اسکریپت تبدیل عدد به حروف با استفاده از متد fromCharCode() به شکل زیر است:
<div><br class="Apple-interchange-newline">string.fromCharCode(num) string.fromCharCode(num....numn)</div>
string.fromCharCode(num)
string.fromCharCode(num....numn)
که پارامترهای آن میتوانند اعداد بین 0 تا 65535 رقم باشند. این نکته را توجه داشته باشید که خروجی تابع fromCharCode به صورت حروف انگلیسی خواهد بود. حال در نظر بگیرید که بخواهیم این حروف به صورت بزرگ چاپ شوند، برای این کار باید از console.log(str) استفاده کنیم. کد اسکی برای حروف بزرگ انگلیسی رنج 65 تا 90 است؛ یعنی عدد اسکی حرف اول A معادل عدد 65 و حرف آخر Z معادل عدد 90 خواهد بود. برای اینکه بتوان اعداد را با حروف بزرگ چاپ کرد، باید با کمک یک حلقه ابتدا آنها را به رشته تبدیل کرده و سپس با console.log(str) چاپ کنیم. کد زیر نحوهی اجرای این تابع را نشان میدهد.
var str = "";
for (let num = 65; num <=90 ; num++)
{
let char = String.fromCharCode(num);
str += char + ", ";
}
console.log(str);
let char = String.fromCharCode(68, 69, 86, 69, 78, 86, 77);
console.log(char)
//sequence of mutiple number value
let letter = String.fromCharCode(68, 69, 86, 69, 78, 85, 77);
console.log(letter )
خروجی کد جاوا اسکریپت تبدیل عدد به حروف بالا به صورت زیر خواهد بود:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
DEVENUM
حال اگر بخواهیم اعداد را به حروف کوچک انگلیسی تبدیل کنیم، کافی است به جای کدهای اسکی رنج 65 تا 90، از کدهای اسکی رنج 97 تا 122 استفاده کنیم تا حروف کوچک a تا z چاپ شود. برای این کار باید حلقه for به صورت زیر تعریف شود:
var str = "";
for (let num = 97; num<=122 ; num++)
{
let char = String.fromCharCode(num);
str += char + ", ";
}
console.log(str);
که خروجی آن به شکل زیر خواهد بود:
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z,
چنانچه بخواهیم تبدیل عدد به حروف در جاوا اسکریپت هم حالت حروف بزرگ و هم حروف کوچک را نمایش دهد، باید به سادگی مقدار آن را با حد پایین حروف کوچک و بزرگ یعنی اعداد 64 و 96 جمع کرده و از همان تابع fromCharCode برای تبدیل استفاده کنیم. مثال:
function numto_Uper_lower_char(mynum)
{
let upper_case = String.fromCharCode(64 + mynum)
let lower_case = String.fromCharCode(96 + mynum)
console.log('upper case :',upper_case)
console.log('lower case',lower_case)
}
numto_Uper_lower_char(13)
خروجی تابع بالا به صورت زیر است:
upper case : M
lower case m
همانطور که میدانید در زبان انگلیسی 26 حرف وجود دارد؛ بنابراین برای اینکه بخواهیم یک عدد به حرف تبدیل شود، باید عدد بین بازهی 1 تا 26 باشد. حال چطور میتوانیم این نکته را در کدها نشان دهیم:
//number to upper case alphabet
const num_alpha = (num) => {
if(num < 1 || num > 26 || typeof num !== 'number'){
return -1;
}
const Startval = 64;
return String.fromCharCode(num + Startval);
};
console.log(num_alpha(12));
خروجی:
L
//number to lower case alphabet
const num_alpha_lower = (num) => {
if(num < 1 || num > 26 || typeof num !== 'number'){
return -1;
}
const Startval = 96;
return String.fromCharCode(num + Startval);
};
console.log(num_alpha_lower (12));
خروجی:
همانطور که دیدید برای تبدیل عدد به حروف از متد fromCharCode استفاده میشود. حالت معکوس این متد، charCodeAt است که معادل یونیکد یک حرف را نشان میدهد. نحوهی استفاده از این متد به شکل زیر است:
function numto_char(character)
{
let char_upper = character.toUpperCase().charCodeAt()
let char_lower = character.toLowerCase().charCodeAt()
console.log('lower-case char ASCII value is :',character.toLowerCase(),char_lower)
console.log('Upper-case char ASCII value is :',character.toUpperCase(),char_upper)
}
numto_char('g')
خروجی این کد به صورت زیر خواهد بود:
lower-case char ASCII value is : g 103
Upper-case char ASCII value is : G 71
باید از پکیجهای تعریف شده برای این کار استفاده کنید. یکی از رایجترین و پرکاربردترین پکیجهای برای این کار wordifyfa است که سورس آن در گیتهاب قرار دارد. با کمک wordifyfa شما میتوانید اعداد انگلیسی را به زبان فارسی برگردانید یا به صورت ریال و تومان بنویسید. در ادامه کد javascript تبدیل عدد به حروف فارسی با استفاده از این پکیج را مشاهده میکنید:
var a = 235000;
var b = wordifyfa(a);
console.log(b); // دویست و سی و پنج هزار
var c = wordifyRials(a); // دویست و سی و پنج هزار ریال
var d = wordifyRialsInTomans(a); // بیست و سه هزار و پانصد تومان
برای نصب این پکیج کافی است دستور زیر را در کد html خود وارد کنید:
<script src="wordifyfa.js"></script>
این پکیج میتواند اعداد را تا رقم 999,999,999,999,999 پشتیبانی کند.
در انتها برای توضیحات بیشتر میتوانید از وب سایت dev کمک بگیرید .