飞镖:替换字符串中的前n个数字

时间:2019-08-02 22:08:18

标签: flutter dart

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

我尝试了以下代码,但没有用:

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

5 个答案:

答案 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});
相关问题