Flutter 省道:替换字符串中的前n个数字
我有一个数字串,我需要用正则表达式替换它的前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
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});