我正在try 适应这一点:

这两种方法都不起作用:

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(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]},')

请看可读的版本.在表达式的最后部分,我添加了对任何非数字字符(包括字符串末尾)的判断,因此您也可以将其与‘12瓦’一起使用.

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

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

for (String test in tests) {    
  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 

Dart相关问答推荐

从扩展类访问抽象类属性

您如何在元素中设置自定义元素标签的样式?

Dart 包对 git repo 子目录的依赖

Flutter 中的with关键字

结合freezed和hive

Dart - 一个 dart 项目如何在不使用 pub 的情况下从另一个 dart 项目导入代码?

如何在 Dart 语言中将 Future 转换为 List

在dart中使用动态(可变)字符串作为正则表达式模式

错误:无法将参数类型void Function(ImageInfo, bool)分配给参数类型ImageStreamListener

Expansion Panel底部溢出

如何在Dart中处理JSON

在 Flutter 的 TextFormField 中管理事件

Dart:实例变量在私有类中应该是私有的还是公共的?

Dart 有小部件库吗?

Dart 是否支持参数化单元测试?

以编程方式使dart中的十六进制 colored颜色 变亮或变暗

Dart 有没有办法测量小代码的执行时间

Null aware函数调用运算符

如何使用 Dart 将字符串解析为数字?

列出dart中双点(.)的使用?