添加逗号或空格以每三位数字分组

新手上路,请多包涵

我有一个向数字添加逗号的功能:

 function commafy( num ) {
  num.toString().replace( /\B(?=(?:\d{3})+)$/g, "," );
}

不幸的是,它不太喜欢小数。鉴于以下使用示例,扩展我的功能的最佳方法是什么?

 commafy( "123" )                 // "123"
commafy( "1234" )                // "1234"
                                 // Don't add commas until 5 integer digits
commafy( "12345" )               // "12,345"
commafy( "1234567" )             // "1,234,567"
commafy( "12345.2" )             // "12,345.2"
commafy( "12345.6789" )          // "12,345.6789"
                                 // Again, nothing until 5
commafy( ".123456" )             // ".123 456"
                                 // Group with spaces (no leading digit)
commafy( "12345.6789012345678" ) // "12,345.678 901 234 567 8"

大概最简单的方法是首先拆分小数点(如果有的话)。从那里去哪里最好?

原文由 Sophie Alpert 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 394
2 个回答

只是用’.‘分成两部分。并分别格式化它们。

 function commafy( num ) {
    var str = num.toString().split('.');
    if (str[0].length >= 5) {
        str[0] = str[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
    }
    if (str[1] && str[1].length >= 5) {
        str[1] = str[1].replace(/(\d{3})/g, '$1 ');
    }
    return str.join('.');
}

原文由 Ghostoy 发布,翻译遵循 CC BY-SA 3.0 许可协议

就那么简单:

 var theNumber = 3500;
theNumber.toLocaleString();

原文由 Itay Merchav 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题