我想在JavaScript中给一个数字添加千位分隔符,比如
.
。
什么是最优雅的方法来实现这个?1000 -> 1.000 1000000 -> 1.000.000
.
。
什么是最优雅的方法来实现这个?1000 -> 1.000 1000000 -> 1.000.000
我不知道优雅的解决方法,但是你可以尝试使用以下代码:
function addCommas(n){
var rx= /(\d+)(\d{3})/;
return String(n).replace(/^\d+/, function(w){
while(rx.test(w)){
w= w.replace(rx, '$1,$2');
}
return w;
});
}
addCommas('123456789456.34');
返回值: (String) 123,456,789,456.34
尝试使用以下正则表达式:
function formatNumber(num)
{
return ("" + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, function($1) { return $1 + "." });
}
alert(formatNumber(100000));
说实话,我是在解决您的问题时在这里找到的。
以下是我的个人看法(仅供娱乐):
var num = 1000000;
var cnt = 0; // temp counter.
var s = String(num).split('').
reverse().
map(function(v) {
if (cnt < 2) {
cnt += 1;
return v;
} else {
cnt = 0;
return ',' + v;
}
}).
reverse().
join('');
// 1,000,000
(10000000 + "").split('').reverse().map(function (value, i) {
return (!(i % 3)) ? "." + value : value;
}).reverse().join('');
这里有一个添加逗号的函数,可以在此处找到:http://www.mredkj.com/javascript/nfbasic.html
function addCommas(nStr)
{
var sep = ',';
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + sep + '$2');
}
return x1 + x2;
}
我稍微修改了代码,添加了var sep = ',';
,这样你可以根据语言轻松更改分隔符。
var sep = ',';
更改为 var sep = '.';
并像这样使用它:addCommas(price.toFixed(2).replace('.',','))
以获得以下格式:3.426,00
。 - Olivier Van de Velde