js千分位实现方法大汇总
更新时间:2022年04月11日 14:51:22 作者:朽木·露琪亚
这篇文章主要介绍了js千分位实现方法大汇总,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
千分位实现汇总
1.最最便捷的实现方式:toLocaleString()
注:只针对数字格式有效!
let num = 1234567890; num.toLocaleString(); //"1,234,567,890"
2.正则匹配
// 正则匹配方法一 let num = 1234567890; let reg = /\d{1,3}(?=(\d{3})+$)/g; String(num).replace(reg, '$&,'); //"1,234,567,890" // 正则匹配方法二 let num = 1234567890; let reg = /\B(?=(\d{3})+$)/g; String(num).replace(reg, ','); //"1,234,567,890" 说明:如果想知道具体怎样的分组方式,可在 [https://regexper.com/](https://regexper.com/) 上测试 1. ?= 表示正向引用 2. $& 表示与正则表达式相匹配的内容,可查看replace() 3. \B 非单词边界
3.for循环
// for循环方法一 function format(num){ num = String(num);//数字转字符串 let str = '';//字符串累加 for (let 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(""); //字符串=>数组=>反转=>字符串 } let num = 1234567890; format(num); //"1,234,567,890" // for循环方法二 function format(num){ num = String(num);//数字转字符串 let str = '';//字符串累加 for (let i = num.length- 1, j = 1; i >= 0; i--, j++){ if (j%3 == 0 && i != 0){ //每隔三位加逗号,过滤正好在第一个数字的情况 str = ',' + num[i] + str; //加千分位逗号 continue; } str = num[i] + str; //累加数字 } return str; } let num = 1234567890; format(num); //"1,234,567,890"
4.slice+while循环
function format(num) { let arr = [], str = String(num), count = str.length; while (count >= 3) { arr.unshift(str.slice(count - 3, count)); count -= 3; } // 如果是不是3的倍数就另外追加到上去 if(str.length % 3) arr.unshift(str.slice(0, str.length % 3)); return arr.toString(); } let num = 1234567890; format(num); //"1,234,567,890"
5.reduce
function format(num) { var str = num+''; return str.split("").reverse().reduce((prev, next, index) => { return ((index % 3) ? next : (next + ',')) + prev; }) } let num = 1234567890; format(num); //"1,234,567,890"
当然也存在很多类似的写法,不一一列举了~
千分位分隔符
方法一
没有小数位时
formatMoney(num) { let reg=/\d{1,3}(?=(\d{3})+$)/g; return (num + '').replace(reg, '$&,'); }
方法二
有小数位时
formatThousand(money) { let res = money.toString().replace(/\d+/, function(num){ // 先提取整数部分 return num.replace(/(\d)(?=(\d{3})+$)/g, function($1){ return $1+","; }); }) return res; },
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
这篇文章主要介绍了javascript新建标签,判断键盘输入,以及判断焦点(示例代码)。需要的朋友可以过来参考下,希望对大家有所帮助2013-11-11JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
ExtJS中的表格功能非常强大,包括了排序、缓存、拖动、隐藏某一列、自动显示行号、列汇总、单元格编辑等实用功能,通过本篇文章给大家介绍JavaScript中使用sencha gridpanel 编辑单元、改变单元格颜色,感兴趣的朋友一起学习2015-11-11js 将input框中的输入自动转化成半角大写(税号输入框)
本文主要介绍了税号输入框:将input框中的输入自动转化成半角大写的方法,具有很好的参考价值,下面跟着小编一起来看下吧2017-02-02小程序开发 page-container 页面容器弹出对话框功能的实现
这篇文章主要介绍了小程序开发 page-container 页面容器,弹出对话框,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-08-08
最新评论