تبدیل اعداد انگلیسی به فارسی/عربی یا بالعکس با جاوا اسکریپت (JS)

تبدیل اعداد انگلیسی به فارسی – با کمک این آموزش می توانید اعداد انگلیسی را به فارسی یا عربی یا برعکس تبدیل کنید .
دقت داشته باشید اعداد فارسی و عربی مشابه یکدیگرند اما تفاوت هایی را هم دارند مثلا عدد 4 و 6 متفاوت است .
در این آموزش قرار است که به 2 روش اعداد را تبدیل کنیم :
- استفاده از کلاس Intl.NumberFormat
- تابعی دستی که خودمان آن را تعریف کرده و به عنوان prototype به رشته می دهیم .
روش اول Intl.NumberFormat
مشکلی این روش دارد امکان تبدیل عدد از فارسی یا عربی به انگلیسی را ندارد .
const numFa = new Intl.NumberFormat('fa-IR', {style : "decimal" }).format(987654321).replace(/٬/g , "") const numAr = new Intl.NumberFormat('ar-AE', {style : "decimal" }).format(987654321).replace(/٬/g , "") console.log(numFa); // ۹۸۷۶۵۴۳۲۱ console.log(numAr); // ٩٨٧٦٥٤٣٢١
روش دوم تابع دستی خودمان
در این روش علاوه بر ویژگی های روش اول می توانیم عدد فارسی یا عربی را به انگلیسی تبدیل کنیم .
String.prototype.getBaseConversionNumber = function(label){ const faDigits = ['۱','۲','۳','۴','۵','۶','۷','۸','۹','۰']; const enDigits = ['1','2','3','4','5','6','7','8','9','0']; const arDigits = ['٠','٩','٨','٧','٦','٥','٤','٣','٢','١'] var whichDigit = {}; switch(label){ case 'fa': whichDigit[label] = faDigits; break; case 'en': whichDigit[label] = enDigits; break; case 'ar': whichDigit[label] = arDigits; break; case 'all': whichDigit = {"fa" : faDigits, "en" : enDigits, "ar" : arDigits}; break; default: whichDigit = []; } return whichDigit; } String.prototype.CvnFromTo = function(fromDigits,toDigits,str){ var str = str == undefined ? this : str; for(var i=0;i<toDigits.length;i++){ const currentFromDigit = fromDigits[i]; const currentToDigit = toDigits[i]; const regex = new RegExp(currentFromDigit,'g'); str = str.replace(regex, currentToDigit); } return str; } String.prototype.convertDigits = function(to){ let str = this; const toCvn = (this.getBaseConversionNumber(to))[to]; const allDigits = this.getBaseConversionNumber("all"); delete allDigits[to]; const Objkeys = Object.keys(allDigits); for(var i=0;i<Objkeys.length;i++){ const currentKey = Objkeys[i]; const fromCvn = allDigits[currentKey]; str = this.CvnFromTo(fromCvn,toCvn,str) } return str; } const myNumber = 987654321; const intFa = myNumber.toString().convertDigits("fa"); const intAr = myNumber.toString().convertDigits("ar"); const intUs = intFa.convertDigits("en"); console.log(intFa); // ۹۸۷۶۵۴۳۲۱ console.log(intAr); // ٩٨٧٦٥٤٣٢١ console.log(intUs); // 987654321
ارسال نظر