我有一串数字,我需要使用正则表达式替换它的前N个数字。
我尝试了以下代码,但没有用:
String hideLastFourCharacters(String s){
final result = s.replaceAll(r"\\d{2}", '-');
return result;
}
答案 0 :(得分:0)
一个选择是删除字符串的前N个字符,然后将N个“-”副本添加到开头。
这可以像这样完成:
var result = s.substring(0, N);
return s.padLeft(s.length + N, '-');
答案 1 :(得分:0)
您可以这样做:
{bark: "loud" | "quiet" | undefined, bite: "nip" | "clamp" | undefined}
前N个数字和
s = N*'-' + s[N:]
后N个数字。
编辑:
没关系,起初它被标记为python
答案 2 :(得分:0)
我通过使用以下方法找到了一个临时解决方案:
String hideLastFourCharacters(String s){
final lastTwoDigits = s.substring(s.length-2, s.length);
return lastTwoDigits.padLeft(9, '*');
}
答案 3 :(得分:0)
要仅替换给定数目的数字,可以使用replaceFirst
方法:
var re = RegExp(r'\d{2}'); // replace two digits
print('123456789'.replaceFirst(re, '--')); // --3456789
如果您需要替换除给定数字的最后{{1}}之外的所有数字,可以将n
用作负前瞻:
replaceAll
前瞻性 var re = RegExp(r'\d(?!\d{0,2}$)'); // keep last 3 digits
print('123456789'.replaceAll(re, '-')); // ------789
排除匹配项,并在末(?!
后面加上n-1或更少的数字\d{0,2}
。
答案 4 :(得分:0)
如果已经有用于此的程序包,请不要重新编写代码:
Github:https://github.com/Ephenodrom/Dart-Basic-Utils
Pub Dev:https://pub.dev/packages/basic_utils
安装:
dependencies:
basic_utils: ^1.5.1
用法:
// Your case
String s = StringUtils.hidePartial(stringToHide, begin: 0, end: stringToHide.lengh - 4);
// Other examples
String s = StringUtils.hidePartial("1234567890");
print(s); // "*****67890"
String s = StringUtils.hidePartial("1234567890", begin: 2, end: 6);
print(s); // "12****7890"
String s = StringUtils.hidePartial("1234567890", begin: 1);
print(s); // "1****67890"
String s = StringUtils.hidePartial("1234567890", begin: 2, end: 14);
print(s); // "12********"
StringUtils类中的其他有用方法:
String defaultString(String str, {String defaultStr = ''});
bool isNullOrEmpty(String s);
bool isNotNullOrEmpty(String s);
String camelCaseToUpperUnderscore(String s);
String camelCaseToLowerUnderscore(String s);
bool isLowerCase(String s);
bool isUpperCase(String s);
bool isAscii(String s);
String capitalize(String s);
String reverse(String s);
int countChars(String s, String char, {bool caseSensitive = true});
bool isDigit(String s);
bool equalsIgnoreCase(String a, String b);
bool inList(String s, List<String> list, {bool ignoreCase = false});
bool isPalindrome(String s);
String hidePartial(String s, {int begin = 0, int end, String replace = "*"});
String addCharAtPosition(String s, String char, int position,{bool repeat = false});