数字转换为带千位分隔符格式的数字字符串,类似这样的需求,前后端都可以处理。在前端,一般么,都是把数字字符串转换成数组,每个3个加入 , ,push到数组中,或者通过字符串累加,每隔三位加逗号,过滤正好在第一个数字的情况,加千分位逗号
方法1:
function thousandsFormat(num) {
num = num + ""; //数字转字符串
var str = ""; //字符串累加
for (var i = num.length - 1, j = 1; i >= 0; i--, j++) {
if (j % 3 == 0 && i != 0) {
//每隔三位加逗号,过滤正好在第一个数字的情况
str += num[i] + ","; //加千分位逗号
continue;
}
str += num[i]; //倒着累加数字
}
return str.split("").reverse().join("");
}
var num = 23123123123 ;
thousandFormat(num); // "23,123,123,123"
方法2:
js内置方法 toLocaleString
具体内容可以参考官网
var number = 351212312300;
console.log(number.toLocaleString()); // 351,212,312,300
方法3: 正则表达式,着重推荐!!!要是在面试中,能手写出来,可以无敌一下下
function thousandsFormat(num) {
var reg=/d{1,3}(?=(d{3})+$)/g;
return (num + ).replace(reg, $&, );
}
第三个方法是最好的,有疑惑的同学可以有时间阅读一下原文,解释的很详细
https://blog.csdn.net/lxcao/article/details/52728246?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2
方法4:正则表达式和replace
function thousandsFormat(num){
var res=num.toString().replace(/d+/, function(n){ // 先提取整数部分
return n.replace(/(d)(?=(d{3})+$)/g,function($1){
return $1+",";
});
})
return res;
}
var a = 123123809123;
console.log(numFormat(a)); // "123,123,809,123"
参考阅读:
1.正则表达式30分钟入门教程
2.String.prototype.replace()
3.https://www.jianshu.com/p/928c68f92c0c
周六周日都在加班,周一又通宵到4点,周二下午打电话又让我赶别的需求。诶,心累,就懒得整理了,大家自己看吧。要是有人有兴趣,我可以提供杭州比较坑的公司excel list,也是别人转发的,不知道是不是真的,就当看看吧
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END





















暂无评论内容