Dart:替换字符串中的前n位数字

Ped*_*ngo 2 dart flutter

我有一串数字,我需要使用正则表达式替换它的前 N ​​位数字。

我尝试了以下代码,但它不起作用:

 String hideLastFourCharacters(String s){
    final result = s.replaceAll(r"\\d{2}", '-');
    return result;
  }
Run Code Online (Sandbox Code Playgroud)

Spa*_*atz 5

要仅替换给定数量的数字,您可以使用replaceFirst方法:

 var re = RegExp(r'\d{2}'); // replace two digits
 print('123456789'.replaceFirst(re, '--')); // --3456789
Run Code Online (Sandbox Code Playgroud)

如果您需要替换除最后一个n给定数字之外的所有数字,您可以使用replaceAll负前瞻:

 var re = RegExp(r'\d(?!\d{0,2}$)'); // keep last 3 digits
 print('123456789'.replaceAll(re, '-')); // ------789
Run Code Online (Sandbox Code Playgroud)

负向先行排除末尾(?!有 n-1 或更少数字的匹配项。\d{0,2}$)