java不同的num值相加_数字每三位添加一个 ',' 的不同实现方式

处理数值,为每三位数加一个逗号,兼容浮点型数值

以1234567.1234 和 12345678为例

通过内置方法实现

function addComma(num = 0){

let temps = num.toString().split('.'), //处理浮点数的情况,整数时会返回原数值

target = temps[0].split('').reverse(), //倒序

lastIndex = target.length;

return target.map((item,index) => {

//第三个就增加一个',',要注意最后一个数字不添加

return ((index+1) % 3 === 0 && (index !== lastIndex - 1)) ? (','+ item) : item;

})

.reverse() //倒序回来

.join('') + (temps[1] ? '.' + temps[1] : ''); //如果是浮点数,就再加上小数部分

}

addComma(1234567.1234) //1,234,567.1234

addComma(12345678) //12,345,678

通过正则表达式

function addComma(num = 0){

let reg = num.toString().indexOf('.') > -1 ? /(d)(?=(d{3})+.)/g : /(d)(?=(d{3})+$)/g;

return num.toString().replace(reg,'$1,');

}

addComma(1234567.1234) //1,234,567.1234

addComma(12345678) //12,345,678

利用正则表达式来处理的思路:

整数和浮点数是有差别的,整数从最右边开始算,浮点数要从小数点'.'开始算

字符串分为两部分,右边是3*n位数字,左边的部分添加','。n = {1,}

右边的部分很好匹配:/(d{3})+/ , 再加上开始算的符号,浮点数要加上 . (.匹配除换行符之外的任何单个字符,加上.转义,就是匹配'.')。整数加上$结束符。

左边的部分,必须依赖于右边的部分。比如说必须右边有三位,左边才会匹配成功,加一个','。就需要用到?=正向肯定查找(x(?=y)仅当x后面跟着y时才会匹配x)。(d)(?=y) y就是右边的部分。

再加上全局搜索的标志 g,不然只会匹配一组,只加一个','。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值