Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Created May 19, 2014 23:42
Show Gist options
  • Save jikeytang/b810d94ecc62322ac4d1 to your computer and use it in GitHub Desktop.
Save jikeytang/b810d94ecc62322ac4d1 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140520-题目2
如何将阿拉伯数字每三位一逗号分隔,如:15000000转化为15,000,000。
回复时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
@ljkfgh2008
Copy link

var cutStr = function(str)
{
  var newStr= new Array(str.length+ parseInt(str.length/3)); 
  newStr[newStr.length-1]=str[str.length-1]; 
  var currentIndex=str.length-1; 
  for(var i = newStr.length-1;i >= 0;i--) 
  { 
    if((newStr.length-i)%4==0) 
    { 
      newStr[i]=","; 
    }
    else
    { 
      newStr[i]=str[currentIndex--]; 
    } 
  } 
  return newStr.join("") 
} 
var num="15000000";
console.log(cutStr(num));

@dhb1987
Copy link

dhb1987 commented May 20, 2014

<input type="text" id="my_rmb"/>
<a href="javascript:;" id="my_click">点我</a>
<script>

document.getElementById('my_click').onclick=function(){
    var uVal=document.getElementById('my_rmb').value;
    document.getElementById('my_rmb').value=rmbSplit(uVal);
};

function rmbSplit(str){
    var rmb='';
    var i2=0;
    for(var i=str.length-1; i>=0; i--){

        if(i%3==0&&i!=0){
            rmb+=str[i2]+',';
        }else{
            rmb+=str[i2];
        }
        i2++;
    }
    return rmb;
}





</script>

@wzc602003869
Copy link

//相比之下我的麻烦了好多
function test(num) {
    var aaa = num.toString();
    var arr1 = aaa.split("");
    var arr2 = [];
    for (var i = 0; i < arr1.length;) {

        for (j = 0; j < 3; j++) {

            arr2.unshift(arr1[i]);
            i++;
            if (j == 2 && i < arr1.length) {
                arr2.unshift(",");
            }
        }
    }

    alert(arr2.join(""));
}
test(12345678);

@jikeytang
Copy link
Author

// 天牛答案:

'1500000000000'.replace(/\B(?=(\d{3})+$)/g,',')

@ZhangSen1
Copy link

function formatNumber(value) {
    value = value.toString();
    if (value.length <= 3) {
        return value;
    } else {
        return formatNumber(value.substr(0, value.length - 3)) + ',' + value.substr(value.length - 3);
    }
}

@guozengxin
Copy link

这个太nice了

'1500000000000'.replace(/\B(?=(\d{3})+$)/g,',')

@caigou
Copy link

caigou commented May 20, 2014

function clec(n){
    var l=parseInt(n.length/3),arr=n.split('');
    for(var i=0; i<l;i++){
            arr[arr.length-3*(i+1)]=','+arr[arr.length-3*(i+1)];
    }
    return arr.join('').replace(/^,/,'');
}
alert(clec('1500000000'));

@sfger
Copy link

sfger commented May 20, 2014

/* 
 * n要格式化的数字
 * x保留小数位数
 * c几位分割
 * */
var number_format = function(n, x, c){
    if(isNaN(n)) return n;
    n = Number(n||0).toFixed(x||0);
    return n.replace(
        /(^\d+)/,
        function(n){
            return n.replace(new RegExp("\\B(?=(\\d{"+(c||3)+"})+$)", 'g'), ',');
        }
    );
};

console.log(number_format(15000000))

@tanxingxing
Copy link

var num=150;//1,500,000,000
function fuckNum(num){
    var num=num+'';
    var len=num.length,str="",len2=len,str2=num.substr(0,len%3==0?3:len%3);
    for(;len>0;len--){
         if(len2-len==3){
             len2=len;
             str=','+num.substr(len,3)+str;
         }

    }
    return (str2+str);
}
alert(fuckNum(num));

@jiangtao
Copy link

'1500000000000'.replace(/\B(\d{3})/g, ',' + '$1');

@sunnylost
Copy link

//缺点:数字受 Number.MAX_SAFE_INTEGER 限制,还是用正则操作字符串更好。
1500000000000..toLocaleString();

@jiangtao
Copy link

jiangtao commented Jun 4, 2014

sunnylost牛逼

@wsgouwan
Copy link

var num = 1500000000000;
            temp = num +'';
            temp = temp.split('').reverse();
            for(var i = 0 ; i < temp.length; i ++){
                if(i!=0 && i%3 == 0){
                    temp[i] = temp[i] + ',';
                }
            }
            temp = temp.reverse().join('')
            console.log( temp );   
            //   上面的正则太强大了  容我细细品味

@rambo-panda
Copy link

var cut_str_to_bankNum = function(num_str, delimiter){
    num_str = num_str.replace(/\s/g, '');
    if(/^\d+$/.test(num_str)){
        delimiter = delimiter || ',';
        num_str = num_str.split('').reverse();
        return num_str.join('').replace(/(\d{3})/g, "$1"+delimiter).split('').reverse().join('');
    }
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment