正则表达式 – 如何将逗号添加到字符串数字

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何将逗号添加到字符串数字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力适应这个:
Insert commas into number string
在飞镖工作,但没有运气.

其中一个不起作用:

print("1000200".replaceAllMapped(new RegExp(r'/(\d)(?=(\d{3})+$)'),(match m) => "${m},"));
print("1000300".replaceAll(new RegExp(r'/\d{1,3}(?=(\d{3})+(?!\d))/g'),(match m) => "$m,"));

是否有更简单/有效的方法将逗号添加到字符串数字?

解决方法

你只是忘了把第一个数字变成组.使用这个短的:

'12345kWh'.replaceAllMapped(new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'),(Match m) => '${m[1]},')

看看可读的版本.在表达式的最后部分,我添加了对任何非数字字符的检查,包括字符串结束,因此您也可以使用’12瓦’.

RegExp reg = new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))');
Function mathFunc = (Match match) => '${match[1]},';

List<String> tests = [
  '0','10','123','1230','12300','123040','12k','12 ',];

tests.forEach((String test) {
  String result = test.replaceAllMapped(reg,mathFunc);
  print('$test -> $result');
});

它完美地运作:

0 -> 0
10 -> 10
123 -> 123
1230 -> 1,230
12300 -> 12,300
123040 -> 123,040
12k -> 12k
12  -> 12

猜你在找的正则表达式相关文章