题解 | #分隔符#
分隔符
https://www.nowcoder.com/practice/e5696992841841a8ab9d026324e4bb77
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> /* 填写样式 */ </style> </head> <body> <!-- 填写标签 --> <script type="text/javascript"> // 填写JavaScript function _comma(number) { // 补全代码 return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); } </script> </body> </html>
在JavaScript中,你可以使用 String.prototype.replace()
方法和一个适当的正则表达式来实现将数字转换为带有千分位分隔符的字符串。以下是一个名为 _comma
的函数实现,它接受一个数字参数并返回格式化为带有千分位分隔符的字符串
这里的正则表达式解释如下:
\B
表示非单词边界,确保分隔符不会添加在数字的开头或中间的数字字符。(?=(\d{3})+(?!\d))
是一个正向先行断言,它会匹配每个三位数字的序列,但要求序列后不应跟数字字符(即不匹配数字中间的三位)。
当调用 _comma(12300)
时,该函数将返回 '12,300'
。这种方法适用于将整数转换为带有千分位分隔符的字符串。如果输入数字非常大,或者你需要处理小数,这个函数同样有效。
为什么不能直接用 Intl.NumberFormat().format(number) 来做呢?
Intl.NumberFormat
是国际化 API 的一部分,它不仅可以用来添加千分符,还可以用来处理不同语言环境下的数字格式,包括小数点、货币符号、百分比等。
如果你之前认为 Intl.NumberFormat
不能用,可能是因为以下原因:
- 不了解这个方法:可能你之前不知道
Intl.NumberFormat
可以用于这种格式化。 - 兼容性问题:尽管
Intl
API 已经被大多数现代浏览器支持,但可能在某些非常旧的浏览器或环境中不可用。 - 特定需求:如果你有特别的需求,比如自定义千分符或者格式化负数,可能需要额外的配置或处理。
然而,对于大多数情况,Intl.NumberFormat
是一个强大且灵活的工具,可以用来格式化数字,并且推荐在需要国际化支持时使用它。如果你只是需要简单地添加千分符,使用正则表达式的方法也是完全可行的。