6

我正在尝试使用新的Javascript 国际化 API,并且想知道是否有办法获取Intl.NumberFormat实例的小数和千位(分组)分隔符?

对象上有一个resolvedOptions方法,但不提供符号。

如果有人想知道,那么对于 en-US,这些将是逗号,和句点.,例如 in 1,000.00

4

2 回答 2

2

如果不出意外,作为一个技巧解决方案(通过土耳其测试;请参阅评论),您可以使用 的输出toLocaleString()来确定有关语言环境中数字格式的信息。对于当前语言环境,例如:

var decimalSeparator = 
    (12345.6789).toLocaleString().match(/345(.*)67/)[1];
var thousandSeparator = 
    (12345.6789).toLocaleString().match(/12(.*)345/)[1];
var numberOfDecimals = 
    (12345.6789).toLocaleString().match(/345(\D*)(\d+)$/)[2].length;

相同的技巧可用于货币格式,例如使用(12345.6789).toLocaleString("en-GB", { style: "currency" }).

于 2014-09-10T09:22:33.053 回答
1

恐怕 ECMA-402 标准没有定义让您访问分隔符的 API。还有另一个问题——目前 ECMA-402 的采用并没有我们希望的那么广泛。

因此,目前,如果我是你,我会寻找CLDR JSON 绑定或iLib 之类的东西,它们显然是通过LocaleInfo和函数提供这些信息的。 顺便提一句。iLib 似乎使用 CLDR 作为信息来源。getDecimalSeparator()getGroupingSeparator()

于 2014-09-08T17:24:21.900 回答