大家好,欢迎来到IT知识分享网。
日常开发中经常会遇见将金额进行千分位格式化的操作,今天来总结下几种常见的实现方式(推荐最后一种,无兼容性)
- while+正则实现
function formatCurrency(n) { //参数转字符串 n = n.toString(); //(-?\d+) 兼容负数 //(-?\d+) 没三位分组 let pattern = /(-?\d+)(\d{3})/; while (pattern.test(n)) { //遍历n,一直替换字符串,直到正则为false n = n.replace(pattern, "$1,$2"); } return n; } let num = ; console.log(formatCurrency(num));
- 正则+replace替换
function formatCurrency(n) { //?=(\d{3}) 正向匹配一个活多个三位数 //(?!\d) 负向查找,确保前面匹配的数字后面没有其他数字 //^(,)将第一个逗号替换为空 return n .toString() .replace(/(?=(\d{3})+(?!\d))/g, ",") .replace(/^(,)/g, "") ; } let num = ; console.log(formatCurrency(num));
- for循环
//直接将参数转数组,然后倒序遍历数组 //三位分一组 //将每组的字符拼接 function formatCurrency (n) { let str = n.toString().split('') let characts=[],s=''; //倒序遍历数组 for(let i=str.length-1;i>=0;i--) { characts.unshift(str[i]) //三位分一组 //将每组的字符拼接 if(characts.length===3&&i!==0){ s += ','+characts.join('') characts=[] }else { if(i===0) { s = characts.join('')+s } } } return s } let num = ; console.log(formatCurrency(num));
- toLocaleString,简单便捷
//无兼容性问题,可以直接使用 function formatCurrency (n) { return n.toLocaleString() } let num = ; console.log(formatCurrency(num));
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/95435.html