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 に答える