参考答案:
1function thousands(num) { 2 var result = [], counter = 0; 3 num = (num || 0).toString().split(''); 4 for (var i = num.length - 1; i >= 0; i--) { 5 counter++; 6 result.unshift(num[i]); 7 if (!(counter % 3) && i != 0) { result.unshift(','); } 8 } 9 console.log(result.join('')); 10 } 11 12thousands(314159265354)
直接获取字符串下标,不需要转数组
1function thousands(num) { 2 var result = '', counter = 0; 3 num = (num || 0).toString(); 4 for (var i = num.length - 1; i >= 0; i--) { 5 counter++; 6 result = num.charAt(i) + result; 7 if (!(counter % 3) && i != 0) { result = ',' + result; } 8 } 9 console.log(result); 10} 11thousands(314159265354)
直接根据截取
1function thousands(num) { 2 var num = (num || 0).toString(), result = ''; 3 while (num.length > 3) { 4 result = ',' + num.slice(-3) + result; 5 num = num.slice(0, num.length - 3); 6 } 7 if (num) { result = num + result; } 8 console.log(result); 9} 10thousands(314159265354)
1function thousands(num) { 2 var num = (num || 0).toString(), reg = '/\d{3}$/', result = ''; //匹配三个数字字符 3 while (reg.test(num) ) { 4 result = RegExp.lastMatch + result;//返回上一次正则表达式搜索过程中最后一个匹配的文本字符串。 5 if (num !== RegExp.lastMatch) { 6 result = ',' + result; 7 num = RegExp.leftContext;//返回上一次正则表达式匹配时,被搜索字符串中最后一个匹配文本之前(不包括最后一个匹配)的所有字符。 8 } else { 9 num = ''; 10 break; 11 } 12 } 13 if (num) { result = num + result; } 14 console.log(result); 15}; 16thousands(314159265354)
1function thousands(num) { 2 // \B 匹配非单词边界,匹配位置的左右两边都是 \w([a-zA-Z0-9_]) 3 // ?=是先行断言,表示这个位置后面的内容需要满足的条件,注意只是匹配一个位置,并不匹配具体的字符,所以是零宽; 4 // ?!后行断言,表示这个位置后面的内容不能满足的条件,(?!\d)表示接下来的位置不是数字,可以是小数点 5 // \d{3}匹配三个数字,+表示前面的内容重复1到多次,也就是匹配3个数字一到多次,3的倍数字符串 6 // (?=(\d{3})+(?!\d))匹配一个位置,这个位置后面首先是3的倍数个数字的字符串,接下来的位置不是数字 7 8 console.log(num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")); 9} 10thousands(314159265354.99)
1function thousands(num) { 2 var num = (num || 0).toString(), temp = num.length % 3; 3 switch (temp) { 4 case 1: 5 num = '00' + num; 6 break; 7 case 2: 8 num = '0' + num; 9 break; 10 } 11 console.log (num.match(/\d{3}/g).join(',').replace(/^0+/, '')); 12} 13thousands(314159265354)
1var num = 123456789 2//格式化千分位输出 3num.toLocaleString() 4//格式化为千分位带$符号输出 5num.toLocaleString("en-US",{style:"currency",currency:"USD"}) 6//格式化为带¥符号输出 7num.toLocaleString("zh-Hans-CN",{style:"currency",currency:"CNY"})
最近更新时间:2021-07-25