如何在Flutter中用星号替换部分字符串?

use*_*690 5 dart flutter

我想用星号(* 符号)替换部分字符串。我怎样才能做到这一点?一直在四处寻找,但我找不到解决方案。

例如,我从后端获取0123456789,但我只想将其显示为*******6789。

请指教。非常感谢。

Old*_*mer 9

尝试这个:

void main(List<String> arguments) {
  String test = "0123456789";
  int numSpace = 6;
  String result = test.replaceRange(0, numSpace, '*' * numSpace);
  print("original: ${test}  replaced: ${result}");
}
Run Code Online (Sandbox Code Playgroud)

请注意,在 dart 中,乘法运算符可以用于字符串,这基本上只是创建字符串的 N 版本。因此,在示例中,我们用“*”填充字符串 6 次。

输出:

original: 0123456789  replaced: ******6789
Run Code Online (Sandbox Code Playgroud)


小智 8

尝试使用replaceRange。它就像魔术一样工作,不需要正则表达式。它用您选择的字符串替换您的值范围。

//for example
prefixMomoNum = prefs.getString("0267268224");

prefixMomoNum = prefixMomoNum.replaceRange(3, 6, "****");
//Output 026****8224 
Run Code Online (Sandbox Code Playgroud)


Hem*_*Raj 6

RegExp您可以使用匹配除最后一个字符之外的所有字符的a 轻松实现它n

例子:

void main() {
  String number = "123456789";
  String secure = number.replaceAll(RegExp(r'.(?=.{4})'),'*'); // here n=4
  print(secure);
}
Run Code Online (Sandbox Code Playgroud)

输出:*****6789

希望有帮助!