Javascript 带有自定义分隔符的Number.toLocaleString()
我需要在JavaScript中使用可能在运行时定义的分隔符格式化一个数字 千位分隔符和十进制分隔符的组合可能与特定区域设置不匹配 有没有办法在JavaScript toLocaleString中提供千位小数分隔符?或者将NumberFormat显式地与我定义的值一起使用Javascript 带有自定义分隔符的Number.toLocaleString(),javascript,locale,number-formatting,Javascript,Locale,Number Formatting,我需要在JavaScript中使用可能在运行时定义的分隔符格式化一个数字 千位分隔符和十进制分隔符的组合可能与特定区域设置不匹配 有没有办法在JavaScript toLocaleString中提供千位小数分隔符?或者将NumberFormat显式地与我定义的值一起使用 我看到一些示例使用了区域设置代码,一些示例使用了其他值,但这些都不包括我的用例。一个选项是使用已知分隔符格式化为字符串,然后使用未知分隔符进行查找/替换 function formatNum(num, separator, fr
我看到一些示例使用了区域设置代码,一些示例使用了其他值,但这些都不包括我的用例。一个选项是使用已知分隔符格式化为字符串,然后使用未知分隔符进行查找/替换
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
一个选项是使用已知分隔符格式化为字符串,然后使用未知分隔符进行查找/替换
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
正如我在问题中提到的,我直到运行时才知道预期的十进制和千位分隔符,因此在本例中设置区域设置是不可行的。在空间方面,可以在运行时检测正确的组合,并选择合适的语言标记。或者分隔符是完全自定义的,如a、x等?创建一个对象并根据分隔符组合命名属性。有点像在家里。我就是想不出用空格作为千位分隔符和小数点的语言环境,也许你们会找到它。有趣的解决方案!我认为客户目前不希望使用与他们的国家不匹配的语言环境,即使他们希望自定义非标准格式符合要求!但这是值得知道的,正如我在问题中提到的,我直到运行时才知道预期的十进制和千位分隔符,因此在本例中设置区域设置是不可行的。实际上有三个不同的分隔符。在空间方面,可以在运行时检测正确的组合,并选择合适的语言标记。或者分隔符是完全自定义的,如a、x等?创建一个对象并根据分隔符组合命名属性。有点像在家里。我就是想不出用空格作为千位分隔符和小数点的语言环境,也许你们会找到它。有趣的解决方案!我认为客户目前不希望使用与他们的国家不匹配的语言环境,即使他们希望自定义非标准格式符合要求!但这是值得知道的这是一个明智和可怕的解决方案!我既讨厌又喜欢它!这其实是一个非常聪明和优雅的解决方案拉里!只要en-US格式不改变,一切都可以!重要提示:在这段代码中,分数符号除其他符号外,所有逗号都将替换为千位分隔符。num.tolocalString'fullwide'应该工作得更好,并且为了消除潜在的科学格式,这是一个明智而可怕的解决方案!我既讨厌又喜欢它!这其实是一个非常聪明和优雅的解决方案拉里!只要en-US格式不改变,一切都可以!重要提示:在这段代码中,分数符号除了任何符号外,所有逗号都将被千位分隔符所取代。num.tolocalString'fullwide'应能更好地工作,并消除潜在的科学格式