【发布时间】:2020-05-01 10:50:17
【问题描述】:
我需要根据区域设置格式重新格式化数值,为此我使用Number.toLocaleString("LOCAL") 函数。在伊朗,大多数人更喜欢使用, 作为千位分隔符,但Number.toLocaleString("fa-IR") 使用٬(从技术上讲是正确的)。
虽然您可以使用以下代码替换字符,但有没有办法覆盖Number.toLocaleString("fa-IR") 的功能?
function formatNumber(number) {
let string = number.toLocaleString('fa-IR'); // ۱۲٬۳۴۵٫۶۷۹
number = number.replace(/\٬/g, ",");
return string;
}
formatNumber(12345.6789); // the result: ۱۲,۳۴۵٫۶۷۹
PS:我知道那里有很多类似的 code-sn-ps,但我想覆盖内置函数(如果可能的话)。
【问题讨论】:
-
我不知道“大多数”人是否更喜欢使用
,(后期逗号),但这是错误的。即使他们这样做,他们也可能喜欢千位分隔符,看起来像拉丁逗号,而不是实际的拉丁逗号。您不应使用非标准字符。如果您希望千位分隔符看起来像拉丁逗号,请更改字体。有像 Vazir 这样的免费字体和像 IranSansX 这样的商业字体,它们的分隔符看起来像拉丁逗号。 -
This sentence from a Wikipedia article 说使用拉丁逗号或空格不是波斯数字的标准(如果我理解正确的话)。
-
@Mahozad 是的,您已经正确理解并提到了正确的观点,但这是客户的偏好。所以它是否可以接受,我无法控制。而关于更改字体,这不是我的愿望,因为在这种情况下,我必须添加一个新的依赖项(字体文件)并增加流量网络。
-
好的,没问题。
标签: javascript localization number-formatting farsi