Javascript 有没有办法在ECMAscript国际化API中获取十进制和千位分隔符?

Javascript 有没有办法在ECMAscript国际化API中获取十进制和千位分隔符?,javascript,internationalization,number-formatting,ecmascript-5,ecmascript-intl,Javascript,Internationalization,Number Formatting,Ecmascript 5,Ecmascript Intl,我正在尝试使用新的,并且想知道是否有一种方法可以获取Intl.NumberFormat实例的十进制和千(分组)分隔符 对象上有一个方法,但它不提供符号 如果有人想知道,那么对于en-US,这些将是逗号,和句点,例如1000.00恐怕ECMA-402标准没有定义允许您访问分隔符的API。还有另一个问题——目前ECMA-402的采用并不像我们希望的那样广泛 因此,就目前而言,如果我是你,我会通过getDecimalSeparator()和getGroupingSeparator()函数查找类似于或的

我正在尝试使用新的,并且想知道是否有一种方法可以获取
Intl.NumberFormat
实例的十进制和千(分组)分隔符

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


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

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

因此,就目前而言,如果我是你,我会通过
getDecimalSeparator()
getGroupingSeparator()
函数查找类似于或的信息。

顺便说一句,iLib似乎使用CLDR作为信息源。

如果没有其他信息,作为一种技巧解决方案(不通过土耳其测试;请参阅注释),您可以使用的输出来确定有关区域设置中数字格式的信息。对于当前区域设置,例如:

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”})

positivePattern
是否有用?如果没有其他问题,您始终可以看到已知数字的实际解析结果。:)@bzlm解析解析的模式是我想到的一个选项。例如,格式化一个已知的数字,例如
1000.50
并在数字
1
后面的字符处检查分组(千)分隔符,以及在最后一个
0
和数字
5
前面的字符之间检查十进制分隔符。这正是我在没有其他可用分隔符时所做的(但使用12345.6789)。我发现它通常工作得很好。思考得好。使用不同的数字应该会使它更简单。但是,如何让JavaScript在当前语言环境中为您提供数字的字符串版本?
parseFloat(12345.6789)。toString()
只是发出12345.6789…我们会寻找12345.6789,对吗?这可能与我最终使用的方法类似,但值得注意的是,这可能会与不打印1234等的区域设置发生冲突。例如,使用“ar”1234=£٢٤٤