Flutter 省道:替换字符串中的前n个数字

Flutter 省道:替换字符串中的前n个数字,flutter,dart,Flutter,Dart,我有一个数字串,我需要用正则表达式替换它的前N位 我尝试了以下代码,但不起作用: String hideLastFourCharacters(String s){ final result = s.replaceAll(r"\\d{2}", '-'); return result; } 一个选项是删除字符串的前N个字符,然后在开头添加N个“-”副本 可以这样做: var result = s.substring(0, N); return s.padLeft(s.len

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

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

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

一个选项是删除字符串的前N个字符,然后在开头添加N个“-”副本

可以这样做:

var result = s.substring(0, N);

return s.padLeft(s.length + N, '-');
你可以做:

s = N*'-' + s[N:]
对于前N个数字和:

s = s[:-N] + N*'-'
对于最后N个数字

编辑:


不管怎样,它最初被标记为python

我使用以下方法找到了一个临时解决方案:

 String hideLastFourCharacters(String s){
    final lastTwoDigits = s.substring(s.length-2, s.length);
    return lastTwoDigits.padLeft(9, '*');
  }

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

 var re = RegExp(r'\d{2}'); // replace two digits
 print('123456789'.replaceFirst(re, '--')); // --3456789
如果需要替换除最后一个
n
给定数字以外的所有数字,则可以使用带负前瞻的
replaceAll

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

负前瞻
(?!
排除在
\d{0,2}
末尾后跟n-1或更少数字的匹配项
$)
如果已经有一个包,则不要重新生成代码:

Github:

出版发展:

安装:

dependencies:
  basic_utils: ^1.5.1
用法:

//你的案子
String s=StringUtils.hidePartial(stringToHide,开始:0,结束:stringToHide.lengh-4);
//其他例子
字符串s=StringUtils.hidePartial(“1234567890”);
列印;//"*****67890"
字符串s=StringUtils.hidePartial(“1234567890”,开始:2,结束:6);
列印;//"12****7890"
字符串s=StringUtils.hidePartial(“1234567890”,开始:1);
列印;//"1****67890"
字符串s=StringUtils.hidePartial(“1234567890”,开始:2,结束:14);
列印;//"12********"
StringUtils类中的其他有用方法:

stringdefaultstring(stringstr,{stringdefaultstr=''''});
bool为空或空(字符串s);
bool不是空的(字符串s);
字符串camelcaseToupper下划线(字符串s);
字符串CAMELCASETOLOWRUNDERSCORE(字符串s);
bool isLowerCase(字符串s);
bool是大写字母(字符串s);
布尔·伊萨西(字符串s);
字符串大写(字符串s);
字符串反转(字符串s);
int countChars(字符串s,字符串char,{bool caseSensitive=true});
bool-isDigit(字符串s);
bool equalsIgnoreCase(字符串a、字符串b);
bool-inList(字符串s,列表列表,{bool-ignoreCase=false});
bool isPalindrome(字符串s);
字符串hidePartial(字符串s,{int begin=0,int end,字符串replace=“*”});
字符串addCharAtPosition(字符串s,字符串char,int位置,{bool repeat=false});