Mask some part of String

你。 提交于 2021-02-04 11:33:08

问题


I have phone no and email address. I dont want to show full information.
So I am thinking mask some character using Regex or MaskFormatter.

Input and desired result

1) 9843444556 -  98*******6   
2) test@mint.com - t***@****.com 

I have achieved this with String loop. But exactly I want to this by using regex or mask. Would you please kindly inform it?


回答1:


Phone:

String replaced = yourString.replaceAll("\\b(\\d{2})\\d+(\\d)", "$1*******$2");

Email:

String replaced = yourString.replaceAll("\\b(\\w)[^@]+@\\S+(\\.[^\\s.]+)", "$1***@****$2");

Explanation: phone

  • The \b boundary helps check that we are the start of the digits (there are other ways to do this, but here this will do).
  • (\d{2}) captures two digits to Group 1 (the two first digits)
  • \d+ matches any number of digits
  • (\d) captures the final digit to Group 2
  • In the replacement, $1 and $2 contain the content matched by Groups 1 and 2

Explanation: Email

  • The \b boundary helps check that we are the start of the characters (there are other ways to do this, but here this will do).
  • (\w) captures one word char to Group 1
  • [^@]+ matches one or more chars that are not @
  • \S+ matches one or more chars that are not whitespace chars
  • (\.[^\s.]+) captures a dot and any chars that are not a dot or space to Group 2
  • In the replacement, $1 and $2 contain the content matched by Groups 1 and 2


来源:https://stackoverflow.com/questions/24795817/mask-some-part-of-string

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!