user3180690
user3180690

Reputation: 243

How to replace part of string with asterisk in Flutter?

I want to replace part of the string with asterisk (* sign). How can I achieve that? Been searching around but I can't find a solution for it.

For example, I getting 0123456789 from backend, but I want to display it as ******6789 only.

Please advise. Many thanks.

Upvotes: 6

Views: 7610

Answers (3)

Daniel Kabu Asare
Daniel Kabu Asare

Reputation: 288

try using replaceRange. It works like magic, no need for regex. its replaces your range of values with a string of your choice.

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

prefixMomoNum = prefixMomoNum.replaceRange(3, 6, "****");
//Output 026****8224 

Upvotes: 9

Hemanth Raj
Hemanth Raj

Reputation: 34839

You can easily achieve it with a RegExp that matches all characters but the last n char.

Example:

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

Output: *****6789

Hope that helps!

Upvotes: 6

OldProgrammer
OldProgrammer

Reputation: 12179

Try this:

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

Notice in dart the multiply operator can be used against string, which basically just creates N version of the string. So in the example, we are padding the string 6 times with'*'.

Output:

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

Upvotes: 10

Related Questions