最近觉得正则表达式的语法表达又有些记不住了,所以又把语法表又双叒叕拿出来温故知新了。然后在重新整合项目中以前遗留下的代码时我看到了一个处理千分位的方法封装如下:
原有方法:
var iValue = https://www.it610.com/article/num
var sValue = iValue +''
var aValue = https://www.it610.com/article/[]
var iNum = sValue.length % 3
var aResult
var index = 0
if (sValue.length <= 3) {
return iValue
} else {
if (iNum === 0) {
for (var i = 0;
i < sValue.length;
i = i + 3) {
aValue[index] = sValue[i] +'' + sValue[i + 1] + '' + sValue[i + 2]
index++
}
} else if (iNum === 1) {
aValue[0] = sValue[0]
index = 1
for (var j = 1;
j < sValue.length;
j = j + 3) {
aValue[index] = sValue[j] + '' + sValue[j + 1] + '' + sValue[j + 2]
index++
}
} else if (iNum === 2) {
aValue[0] = sValue[0] + '' + sValue[1]
index = 1
for (var k = 2;
k < sValue.length;
k = k + 3) {
aValue[index] = sValue[k] + '' + sValue[k + 1] + '' + sValue[k + 2]
index++
}
}
if (country === 'Indonesia') {
aResult = aValue.join('.')
} else {
aResult = aValue.join(',')
}
return aResult.toString()
}
【其他|正则—让代码更简洁(千分位方法改写)】嗯,觉得代码有点繁杂亢余,可以改进改进,或者用下刚好可以拿出手的正则来处理以下
首先我们根据处理千分位的要求来进行分析:
- 首先处理的对象由纯数字组成;
- 每隔三个数字用逗号进行分割;
- 数字首末不应存在逗号;
let num = '1234567890'
// 假设有数字 1234567890 那么我们最终想要得到千分位处理后的结果应为1,234,567,890
// (?!^):防止首位出现‘,’
// \d{3}+$:每三位数字和匹配结束的最后三位数字
///g: 全局匹配
因此得到 --> /(?!^)(?=(\d{3})+$)/g
let regex = /(?!^)(?=(\d{3})+$)/g
//对匹配的位置进行替换
let result = num.replace(regex, ',')
console.log(result) // '1,234,567,890'
//我们可以简写成:
let result = num.replace(/(?!^)(?=(\d{3})+$)/g,',')
所以使用正则后重新封装的方法比原有的方法是不是更加简洁了呢!简直nice~
得证:结果只有一个但是方法却有很多种,因此我们要在不断的学习中充实自己的技能包,用最简洁的方法去高效地得到正确的结果。
推荐阅读
- 其他|有趣的10个CMD命令
- 其他|清理C盘内存(电脑C盘飘红了,那么如何清理垃圾文件,总结几种亲测方案)
- 其他|如何复制百度文库中的内容
- 谈谈base中遇到的坑点 及 其他
- 用VS Code画uml
- Mac 安装Android Studio3.0安装和卸载总结
- 其他|c++读取TXT文件内容
- util|POI兼容读取Excel2003和Excel2007
- java|Junit4精简解析
- 解决Adobe Reader XI打开就后崩溃问题