0

我在格式化我的数字时遇到问题。我在这个论坛上找到了一个脚本,我将在此文本下方显示。它确实适用于逗号,但是当我添加一个数字时10000000.00,它将变为10000000,00,但如果我添加一个数字10333333.00,它将变为:10 33 33 33,00,这不是我想要的。我希望我的数字格式是这样的:10 333 333,00.

我一直在寻找解决方案很长时间。我试图更改正则表达式,但我对正则表达式还不是很好,所以我希望有人可以帮助我解决这个问题。

这是脚本:

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;
}
4

1 回答 1

0
var tests =
[
3141,
314159,
31415926,
10000000.001,
10333333.002,
42121.1415926535
],
res,
i;

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;
}

for (i = 0; i < tests.length; i++)
{
  document.write(addCommas(tests[i]) + '<br>');
}

\d+{3}很奇怪并被 JSLint 拒绝(并且不适用于 Firefox)。

在JSFiddle上测试的代码。

于 2012-11-14T15:04:28.913 回答