JavaScript 数字千分符
🌙
手机阅读
本文目录结构
第二种:
需求
对数字或者字符串进行千分符处理,写出核心代码就可以,能兼容处理更好;
第一种字符串方法
// 封装为方法,方便维护,尽量不要改写默认对象的原型
function thousand(arg) {
// 转换成字符
arg = arg.toString();
let count = 0;
let strNew = '';
// 从后向前加千分符,
// 987,654,321 然后转为 123,456,789
for (let i = (arg.length - 1); i >= 0; i--) {
if (count % 3 === 0 && count != 0) {
strNew += ',';
}
strNew += arg.substr(i, 1);
count++;
}
console.log('strNew', strNew);//987,654,321
strNew = strNew.split('').reverse().join('');
return strNew;
}
let str1 = '123456789';
let str2 = '12345678';
let str3 = '1234567';
console.log(thousand(str1));//123,456,789
console.log(thousand(str2));//12,345,678
console.log(thousand(str3));//1,234,567
第二种:正则方法
// 封装为方法,方便维护,尽量不要改写默认对象的原型
function thousand(arg) {
// 转换成字符
arg = arg.toString();
// ((?:\d{3})+) => 匹配连续三个参数(从后面匹配的方式)
// 前面可能存在0个,也可能存在,1个,2个,3个,但是如果是3个,就会被后面的正则匹配,所以匹配两个就好
// 同时首位不能为0
// ([1-9]\d{0,2})
var reg = /^([1-9]\d{0,2})((?:\d{3})+)$/;
var s = arg.replace(reg, function (...arg) {
console.log('arg', arg);
// arg[2].match(/\d{3}/g) 返回一个数组,数字加字符串,会默认用,隔开
// (arg[2].match(/\d{3}/g)).join('-')
return arg[1] + ',' + arg[2].match(/\d{3}/g);
})
return s;
}
let str1 = '123456789';
let str2 = '12345678';
let str3 = '1234567';
console.log(thousand(str1));//123,456,789
console.log(thousand(str2));//12,345,678
console.log(thousand(str3));//1,234,567
第二种:toLocaleString
方法
// 封装为方法,方便维护,尽量不要改写默认对象的原型
function thousand(arg) {
// toLocaleString 方法返回这个数字在特定语言环境下的表示字符串。
// https://www.axihe.com/api/js-es/ob-number/to-locale-string.html
// 此参数大小写不敏感,
return (parseInt(arg)).toLocaleString("en")
}
let str1 = '123456789';
let str2 = '12345678';
let str3 = '1234567';
console.log(thousand(str1));//123,456,789
console.log(thousand(str2));//12,345,678
console.log(thousand(str3));//1,234,567