Javascript 千位分隔符/字符串格式
2022-08-30 05:01:21
Javascript中是否有任何函数可以格式化数字和字符串?
我正在寻找一种方法为字符串或数字的千位分隔符...(如 String.Format in c#)
Javascript中是否有任何函数可以格式化数字和字符串?
我正在寻找一种方法为字符串或数字的千位分隔符...(如 String.Format in c#)
更新(7年后)
下面原始答案中引用的参考文献是错误的。有一个内置的函数,这正是kaiser在下面建议的:toLocaleString
所以你可以做:
(1234567.89).toLocaleString('en') // for numeric input
parseFloat("1234567.89").toLocaleString('en') // for string input
下面实现的函数也可以工作,但根本不是必需的。
(我想也许我会很幸运,在2010年发现这是必要的,但不是。根据这个更可靠的参考,toLocaleString 自 ECMAScript 3rd Edition [1999] 以来一直是该标准的一部分,我相信这意味着它早在 IE 5.5 之前就得到了支持。
原始答案
根据此参考,没有用于向数字添加逗号的内置函数。但该页面包含一个如何自己编码的示例:
function addCommas(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
编辑:要采用另一种方式(将带逗号的字符串转换为数字),您可以执行如下操作:
parseFloat("1,234,567.89".replace(/,/g,''))
如果 是关于本地化千位分隔符、分隔符和小数分隔符,请使用以下内容:
// --> numObj.toLocaleString( [locales [, options] ] )
parseInt( number ).toLocaleString();
您可以使用以下几个选项(甚至是具有回退的区域设置):
number = 123456.7089;
result = parseInt( number ).toLocaleString() + "<br>";
result += number.toLocaleString( 'de-DE' ) + "<br>";
result += number.toLocaleString( 'ar-EG' ) + "<br>";
result += number.toLocaleString( 'ja-JP', {
style : 'currency',
currency : 'JPY',
currencyDisplay : 'symbol',
useGrouping : true
} ) + "<br>";
result += number.toLocaleString( [ 'jav', 'en' ], {
localeMatcher : 'lookup',
style : 'decimal',
minimumIntegerDigits : 2,
minimumFractionDigits : 2,
maximumFractionDigits : 3,
minimumSignificantDigits : 2,
maximumSignificantDigits : 3
} ) + "<br>";
var el = document.getElementById( 'result' );
el.innerHTML = result;
<div id="result"></div>
有关 MDN 信息页面的详细信息。
编辑:像Serena这样的评论@I补充如下:
要支持具有非英语区域设置的浏览器,而我们仍然希望使用英语格式,请使用 .也适用于浮点。
value.toLocaleString('en')