let numberString = "۱۲۳۴.5678";
let number = parseNumber(numberString);
val formatted1 = number.toLocaleString("fa"); // OR "fa-IR" for IRAN
val formatted2 = number.toLocaleString("en"); // OR "en-US" for USA
val formatted3 = number.toLocaleString("ar-EG"); // OR "ar" which uses western numerals
3条答案
按热度按时间yqlxgs2m1#
Number
函数确实需要0到9的数字,但不处理阿拉伯数字。您需要自己处理这些问题:
5f0d552i2#
我建议你从更低的层面处理:用相应的ASCII数字替换阿拉伯数字,然后进行转换。
例如:
vohkndzv3#
下面是一个名为 * paserNumber * 的函数,它将一个表示数字的字符串转换为一个实际的JS Number对象。它还可以接受带有小数(十进制数字)和阿拉伯语/波斯语/英语千位分隔符的数字字符串。我不知道这个解决方案是否是最好的,性能方面。
注意,* parse * 函数是相当宽容的,数字字符串可以是波斯语/阿拉伯语/拉丁语数字和分隔符的组合。
旁注
获得 * Number * 后,您可以使用Number.toLocaleString函数将其格式化为您想要的格式:
有关设置数字格式的详细信息,请参阅this answer。