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

16 浏览
0 Comments

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

我有一个函数可以给数字添加逗号:

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

不幸的是,它对小数处理不太好。根据以下使用示例,扩展我的函数的最佳方法是什么?

commafy( "123" )                 // "123"
commafy( "1234" )                // "1234"
                                 // 不要在整数位数不足5位之前添加逗号
commafy( "12345" )               // "12,345"
commafy( "1234567" )             // "1,234,567"
commafy( "12345.2" )             // "12,345.2"
commafy( "12345.6789" )          // "12,345.6789"
                                 // 再次,直到整数位数达到5位之前不添加
commafy( ".123456" )             // ".123 456"
                                 // 用空格分组(没有前导数字)
commafy( "12345.6789012345678" ) // "12,345.678 901 234 567 8"

最简单的方法可能是先根据小数点拆分(如果有的话)。从那里最好继续做些什么呢?

0