正则—让代码更简洁(千分位方法改写)

最近觉得正则表达式的语法表达又有些记不住了,所以又把语法表又双叒叕拿出来温故知新了。然后在重新整合项目中以前遗留下的代码时我看到了一个处理千分位的方法封装如下:
原有方法:

      var iValue = num
      var sValue = iValue + ''
      var aValue = []
      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()
      }

嗯,觉得代码有点繁杂亢余,可以改进改进,或者用下刚好可以拿出手的正则来处理以下
首先我们根据处理千分位的要求来进行分析:

  1. 首先处理的对象由纯数字组成;
  2. 每隔三个数字用逗号进行分割;
  3. 数字首末不应存在逗号;

根据以上三点着手将此方法改为正则处理:

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~
得证:结果只有一个但是方法却有很多种,因此我们要在不断的学习中充实自己的技能包,用最简洁的方法去高效地得到正确的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值