我正在尝试使用新的Javascript internationalization API,并想知道是否有办法获取Intl.NumberFormat
实例的小数和千位(分组)分隔符?
对象上有resolvedOptions
方法,但不提供符号。
如果有人想知道,那么对于en-US,这些将是逗号,
和句号.
,例如1,000.00
。
答案 0 :(得分:1)
如果没有别的,作为一种技巧解决方案(没有通过土耳其测试;请参阅评论),您可以使用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" })
。
答案 1 :(得分:0)
我担心ECMA-402标准没有定义允许您访问分隔符的API。还有另一个问题 - 目前ECMA-402的采用并不像我们希望的那样广泛。
因此,如果我是你,我会通过CLDR JSON bindings getDecimalSeparator()
查看iLib或apparently provides LocaleInfo's这些信息, getGroupingSeparator()
功能。
BTW。 iLib似乎使用CLDR作为信息来源。