2016-11-08 84 views
0

我需要使用可能在运行时定义的分隔符在JavaScript中格式化数字。带自定义分隔符的Number.toLocaleString()

千位和小数点分隔符的组合可能与特定区域设置不匹配。

有没有办法在JavaScript中提供千位和小数点分隔符toLocaleString()?或者使用NumberFormat显式使用我定义的值?

我看到使用语言环境代码的示例,有些使用其他值(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString),但这些不包括我的用例。

+1

http://stackoverflow.com/questions/37994133/change-decimal-mark/37994346#37994346 – Teemu

+0

正如我提到的问题,我不知道,直到运行时如此设定一个预期的小数和千个分隔符区域设置对于此示例不可行。 – dougajmcdonald

+0

实际上有三种不同的分隔符,'''''''和空格,可以在运行时检测到正确的组合,并选择合适的语言标签。或者是分隔符是否完全自定义,如'a','x'等? – Teemu

回答

2

一种选择是格式化为已知分隔符的字符串,然后使用未知分隔符执行查找/替换。

function formatNum(num, separator, fraction) { 
    var str = num.toLocaleString('en-US'); 
    str = str.replace(/\./, fraction); 
    str = str.replace(/,/g, separator); 
    return str; 
} 

formatNum(12342.2, "a", "x"); 
//12a342x2 
+0

这既是一个明智的和可怕的解决方案!我都讨厌并喜欢它! – dougajmcdonald

+0

:)为什么可怕? –

+0

这实际上是一个非常聪明和优雅的解决方案larry!只要en-US格式不会改变外挂应该没问题! – Victor