javascript - js 字符串中加入逗号
高洛峰
高洛峰 2017-04-11 09:08:37
[JavaScript讨论组]

如题,现有一个数字字符串,如果字符串中没有小数点,从右到左每隔3位加入一个逗号,即

1234567890 --> 1,234,567,890

如果字符串中有小数点,整数部分规则不变,小数部分从左到右每隔3位加入一个逗号,即

1234567890.12345 --> 1,234,567,890.123,45

求个算法,谢谢!

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
PHPz
function h(str){
  if(/\./.test(str)){
    return str.replace(/\d(?=(\d{3})+\.)/g, "$&,").split("").reverse().join("").replace(/\d(?=(\d{3})+\.)/g, "$&,").split("").reverse().join("");
  }else{
    return str.replace(/\d(?=(\d{3})+$)/g, "$&,");
  }
}

-----------分割线

貌似找到了另一个好方法,分享一下

//加强版
function hh(str){
  if(/\./.test(str)){
    return str.replace(/\d(?=(\d{3})+\.)/g, "$&,").replace(/\d{3}(?![,.]|$)/g, "$&,");
  }else{
    return str.replace(/\d(?=(\d{3})+$)/g, "$&,");
  }
}

希望经得住考验。。

伊谢尔伦
  1. 你先讲讲这个到底是怎么变的……

    123456.7890 --> 1,234,567,890.123,45
  2. 每隔三位加逗号的话,大概可以这样:

    String.prototype.formatNumber = function(str) {
    return str.split(".")
        .map((n, i) => i
            ? n
            : n.split("").reverse().join(""))
        .map((n) => n.replace(/[\d]{3})(?!$)/g, "$1,"))
        .map((n, i) => i
            ? n
            :n.split("").reverse().join(""))
        .join(".");
    }
    
    console.log("1234567890".formatNumber());    //1,234,567,890
    console.log("123456.7890".formatNumber());   //123,456.789,0
怪我咯
function h(str){
  if(/\./.test(str)){
    return str.replace(/\d(?=(\d{3})+\.)/g, "$&,").split("").reverse().join("").replace(/\d(?=(\d{3})+\.)/g, "$&,").split("").reverse().join("");
  }else{
    return str.replace(/\d(?=(\d{3})+$)/g, "$&,");
  }
}
天蓬老师

这个问题挺好的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号