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

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

تبدیل اعداد انگلیسی به فارسی – با کمک این آموزش می توانید اعداد انگلیسی را به فارسی یا عربی یا برعکس تبدیل کنید .
دقت داشته باشید اعداد فارسی و عربی مشابه یکدیگرند اما تفاوت هایی را هم دارند مثلا عدد 4 و 6 متفاوت است .

در این آموزش قرار است که به 2 روش اعداد را تبدیل کنیم :

  1. استفاده از کلاس Intl.NumberFormat
  2. تابعی دستی که خودمان آن را تعریف کرده و به عنوان 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

gist

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us

( فروشگاهی ، خبری ، رزرواسیون ، وردپرس ، حل مشکلات وردپرسی )

This will close in 21 seconds