我正在尝试使用新的Javascript 国际化 API,并且想知道是否有办法获取Intl.NumberFormat
实例的小数和千位(分组)分隔符?
对象上有一个resolvedOptions
方法,但不提供符号。
如果有人想知道,那么对于 en-US,这些将是逗号,
和句点.
,例如 in 1,000.00
。
我正在尝试使用新的Javascript 国际化 API,并且想知道是否有办法获取Intl.NumberFormat
实例的小数和千位(分组)分隔符?
对象上有一个resolvedOptions
方法,但不提供符号。
如果有人想知道,那么对于 en-US,这些将是逗号,
和句点.
,例如 in 1,000.00
。
如果不出意外,作为一个技巧解决方案(未通过土耳其测试;请参阅评论),您可以使用 的输出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" })
.
恐怕 ECMA-402 标准没有定义让您访问分隔符的 API。还有另一个问题——目前 ECMA-402 的采用并没有我们希望的那么广泛。
因此,目前,如果我是你,我会寻找CLDR JSON 绑定或iLib 之类的东西,它们显然是通过LocaleInfo和函数提供这些信息的。
顺便提一句。iLib 似乎使用 CLDR 作为信息来源。getDecimalSeparator()
getGroupingSeparator()