Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有自定义分隔符的Number.toLocaleString()_Javascript_Locale_Number Formatting - Fatal编程技术网

Javascript 带有自定义分隔符的Number.toLocaleString()

Javascript 带有自定义分隔符的Number.toLocaleString(),javascript,locale,number-formatting,Javascript,Locale,Number Formatting,我需要在JavaScript中使用可能在运行时定义的分隔符格式化一个数字 千位分隔符和十进制分隔符的组合可能与特定区域设置不匹配 有没有办法在JavaScript toLocaleString中提供千位小数分隔符?或者将NumberFormat显式地与我定义的值一起使用 我看到一些示例使用了区域设置代码,一些示例使用了其他值,但这些都不包括我的用例。一个选项是使用已知分隔符格式化为字符串,然后使用未知分隔符进行查找/替换 function formatNum(num, separator, fr

我需要在JavaScript中使用可能在运行时定义的分隔符格式化一个数字

千位分隔符和十进制分隔符的组合可能与特定区域设置不匹配

有没有办法在JavaScript toLocaleString中提供千位小数分隔符?或者将NumberFormat显式地与我定义的值一起使用


我看到一些示例使用了区域设置代码,一些示例使用了其他值,但这些都不包括我的用例。

一个选项是使用已知分隔符格式化为字符串,然后使用未知分隔符进行查找/替换

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'应能更好地工作,并消除潜在的科学格式