博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]JS实现千分位
阅读量:5298 次
发布时间:2019-06-14

本文共 1295 字,大约阅读时间需要 4 分钟。

本文转自:https://www.cnblogs.com/lvmylife/p/8287247.html

方法一:正则实现 

function format (num) {      var reg=/\d{1,3}(?=(\d{3})+$)/g;       return (num + '').replace(reg, '$&,');  }

解释

  • 正则表达式 \d{1,3}(?=(\d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾
  • ?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始
  • $& 表示与正则表达式相匹配的内容,具体的可查看 

运行的过程看下图

假如有数字13123903243,则正则表达式查找与替换的过程,如下图所示

方法二:for循环正常思维算法

function format(num){    num=num+'';//数字转字符串    var str="";//字符串累加    for(var i=num.length- 1,j=1;i>=0;i--,j++){        if(j%3==0 && i!=0){//每隔三位加逗号,过滤正好在第一个数字的情况            str+=num[i]+",";//加千分位逗号            continue;        }        str+=num[i];//倒着累加数字  }    return str.split('').reverse().join("");//字符串=>数组=>反转=>字符串  }

 基本思路

 方法三:slice+while循环

function format(num) {  var arr = [],       str = num + '',      count = str.length;  while (count >= 3) {    arr.unshift(str.slice(count - 3, count));    count -= 3;  }  // 如果是不是3的倍数就另外追加到上去  str.length % 3 && arr.unshift(str.slice(0, str.length % 3));  return arr.toString();}

 方法四:reduce版

function format(num) {  var str = num+'';  // ["8", "7", "6", "5", "4", "3", "2", "1"]  return str.split("").reverse().reduce((prev, next, index) => {    return ((index % 3) ? next : (next + ',')) + prev;  })} console.log(format(12345678));

 

转载于:https://www.cnblogs.com/freeliver54/p/9729277.html

你可能感兴趣的文章
正则表达式1--特殊字符
查看>>
python基础(四)
查看>>
2018 ACM南京网络赛H题Set解题报告
查看>>
深入理解JS立即执行函数
查看>>
python基础知识学习:列表和元组
查看>>
Django logging配置
查看>>
iOS开发日记6-跳转appStore评分
查看>>
SpringBoot war包部署到Tomcat服务器
查看>>
对缓存的思考——提高命中率
查看>>
让静态页面显示用户登录状态
查看>>
K-means算法
查看>>
input提示文字;placeholder字体修改
查看>>
MyBatis知识点总结(一)
查看>>
面试题链接记录
查看>>
Android Studio 版本间区别
查看>>
SQL SERVER: 合并相关操作(Union,Except,Intersect)
查看>>
1025-完数
查看>>
汇编第二章知识总结
查看>>
负载均衡简单配置
查看>>
Informix Online数据库日常管理及维护
查看>>