有没有办法在ECMAscript Internationalization API中获取小数和千位分隔符?

时间:2014-09-08 11:06:58

标签: javascript internationalization number-formatting ecmascript-5 ecmascript-intl

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

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

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

2 个答案:

答案 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()查看iLibapparently provides LocaleInfo's这些信息, getGroupingSeparator()功能。
BTW。 iLib似乎使用CLDR作为信息来源。