Created
May 19, 2014 23:42
-
-
Save jikeytang/b810d94ecc62322ac4d1 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140520-题目2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
如何将阿拉伯数字每三位一逗号分隔,如:15000000转化为15,000,000。 | |
回复时注意加上下面这句话,才会有语法高亮或格式缩进。 | |
```javascript |
mailzwj
commented
May 20, 2014
再优化了一下
"115000000".split("").reverse().join("").replace(/(\d{3})(?=[^$])/g, "$1,").split("").reverse().join("");
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));
<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>
//相比之下我的麻烦了好多
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);
// 天牛答案:
'1500000000000'.replace(/\B(?=(\d{3})+$)/g,',')
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);
}
}
这个太nice了
'1500000000000'.replace(/\B(?=(\d{3})+$)/g,',')
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'));
/*
* 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))
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));
'1500000000000'.replace(/\B(\d{3})/g, ',' + '$1');
//缺点:数字受 Number.MAX_SAFE_INTEGER 限制,还是用正则操作字符串更好。
1500000000000..toLocaleString();
sunnylost牛逼
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 );
// 上面的正则太强大了 容我细细品味
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