【问题标题】:How to replace part of string with asterisk in Flutter?如何在 Flutter 中用星号替换部分字符串?
【发布时间】:2020-01-31 15:10:24
【问题描述】:

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

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

请指教。 非常感谢。

【问题讨论】:

  • 请记住,任何人都可以看到您从后端发送的内容,在前端进行修改不会对最终用户隐藏。

标签: flutter dart


【解决方案1】:

试试这个:

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

注意 dart 中的 multiply operator 可用于字符串,它基本上只是创建字符串的 N 版本。所以在这个例子中,我们用 '*' 填充字符串 6 次。

输出:

original: 0123456789  replaced: ******6789

【讨论】:

    【解决方案2】:

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

    例子:

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

    输出:*****6789

    希望有帮助!

    【讨论】:

      【解决方案3】:

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

      //for example
      prefixMomoNum = prefs.getString("0267268224");
      
      prefixMomoNum = prefixMomoNum.replaceRange(3, 6, "****");
      //Output 026****8224 
      

      【讨论】:

        猜你喜欢
        • 2018-07-14
        • 2017-10-27
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多