如何在JavaScript中给数字添加千位分隔符?

9
我想在JavaScript中给一个数字添加千位分隔符,比如.
1000 -> 1.000
1000000 -> 1.000.000
什么是最优雅的方法来实现这个?

有很多东西,但是没有一个真正起作用,所以我认为不值得在这里插入它们。 - js-coder
1
值得提一下它们,这样我们就知道你尝试过但失败了。那么,你尝试了什么? :) - Sergio Tulentsev
1
可能是重复的问题:如何使用JavaScript格式化数字?在JavaScript中格式化数字。在提出新问题之前,请先使用搜索功能。 - Felix Kling
5个回答

21

我不知道优雅的解决方法,但是你可以尝试使用以下代码:

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


6

尝试使用以下正则表达式:

function formatNumber(num)
{
    return ("" + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, function($1) { return $1 + "." });
}

alert(formatNumber(100000));

说实话,我是在解决您的问题时在这里找到的。


3

以下是我的个人看法(仅供娱乐):

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

3
您可以使用以下代码完成此操作:
(10000000 + "").split('').reverse().map(function (value, i) {
    return (!(i % 3)) ? "." + value : value;
}).reverse().join('');

2

这里有一个添加逗号的函数,可以在此处找到: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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接