如何在没有RegExp的情况下向逗号添加逗号

时间:2015-07-01 12:51:45

标签: javascript string numbers

如果我能够使用正则表达式或toLocaleString(),这将很容易:

return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

但是,我正在转换的脚本无法使用正则表达式,因此在数字中添加逗号会更长一些。这就是我迄今为止在JavaScript中所拥有的。

var nums = [1, 12, 124, 1024, 10024, 100024, 1200240, 11000240, 101000240, 1201000240, 12010002400];


for (i = 0; i < nums.length; i++)
{

  var n = nums[i];
  var str = n.toString();
  var l = str.length;

  var niceNum = gimmeNicerNumber(n);
  alert(n + " ... " + niceNum + "  " + l + " i: " + (i+1));
}


function gimmeNicerNumber (num)
{
  str = num.toString();
  var len = str.length; 
  var numString = "";

  if (len < 4) return str;

    for (i = 0; i < len; i++)
    {
      numString += str[i];
      if (i%3 == 0)
      {
        numString += ",";
      }
    }

    // re=evaluate len!
    len = numString.length;

    if (numString.charAt(len-1) == ",") numString = numString.slice(0,-1); 

    return numString;
}

我期待输出

1  12 124 1,024 10,024 100,024 1,200,240 11,000,240 101,000,240 1,201,000,240 12,010,002,400

只有它跳过循环上的几个数字(3,5,7),我无法弄清楚原因。一双新鲜的眼睛会有所帮助。谢谢。

3 个答案:

答案 0 :(得分:2)

好的,现在我有了这个:

function niceNumber(n) {
    var str = ""+n;
    var l=str.length;
    while (l>3) {
        l-=3;
        str = str.slice(0,l)+","+str.slice(l);
    }
    return str;
}

var nums = [1, 12, 124, 1024, 10024, 100024, 1200240, 11000240, 101000240, 1201000240, 12010002400];
var a=[];
for (i=0;i<nums.length;++i) { a.push(niceNumber(nums[i])); }
console.log(a.join(" "));

完成!

答案 1 :(得分:0)

如何(&gt; = IE11)

for (var i = 0; i < nums.length; i++)
     console.log( nums[i].toLocaleString("en-US") );

1
12
124
1,024
10,024
100,024
1,200,240
11,000,240
101,000,240
1,201,000,240
12,010,002,400

答案 2 :(得分:0)

我发现了我哪里出错了。我忘了在for ...循环中添加 var ,这很好地搞砸了。

for (i = 0; i < nums.length; i++)

应该是

for (var i = 0; i < nums.length; i++)

我还添加了一个计数器而不是

if (i%3 == 0)