如何在 javascript 中将拉丁数字转换为阿拉伯数字?

How to convert latin numbers to arabic in javascript?

我使用自定义函数将数字转换为阿拉伯语格式,如下所示:

 const numbers = `۰۱۲۳۴۵۶۷۸۹`;
  const convert = (num) => {
    let res = "";
    const str = num.toString();
    for (let c of str) {
      res += numbers.charAt(c);
    }
    return res;
  };

它是这样工作的:

console.log(convert(123)) // ==> ۱۲۳

当有一个带小数的数字并将其转换为没有小数点的阿拉伯格式时会出现问题,例如:

console.log(convert(123.9)) // ==> ۱۲۳۹

我希望输出为 ۱۲۳،۹ .

我的函数如何将带小数的数字转换为带小数点的阿拉伯数字?

尝试toLocaleString()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

console.log((123.9).toLocaleString('ar-AE'))

编辑:

toLocaleString 个选项

(123.9872512).toLocaleString("ar-AE", {
  useGrouping: false,
  maximumSignificantDigits: 10
})

通过同时处理小数点和千位分隔符将拉丁数字转换为阿拉伯数字的另一种方法如下(通知编号作为字符串传递):

const numLatinToAr=n=>n.replace(/\d/g,d=>"٠١٢٣٤٥٦٧٨٩"[d]).replace(/\./g, "٫");

console.log(numLatinToAr("12345"));
console.log(numLatinToAr("12345.67"));
console.log(numLatinToAr("12,345.67"));

另一种方法是使用 toLocaleString() 但不要使用国家代码,因为这可能会在未来发生变化

使用 arab 编号系统:

console.log((123.93).toLocaleString('ar-u-nu-arab'))
console.log((4578123.93).toLocaleString('ar-u-nu-arab'))