显示电子邮件地址作为提示

时间:2014-10-15 06:51:00

标签: java regex string replace

我看过邮件服务将电子邮件ID显示为e*****e@gmail.com,主要位于其恢复页面中。

所以我想将example@gmail.com替换为e*****e@gmail.com

是否可以单独使用String#replace(String)来实现它?或者我应该使用一些REGEX来实现它。

感谢您在adavance中提出的宝贵建议

4 个答案:

答案 0 :(得分:2)

搜索正则表达式:

\b(\w)\S*?(\S)(?=@)(\S+)\b

替换模式:

$1****$2$3****$4

RegEx Demo

<强>代码:

String email = "anexample@gmail.com"; 
String repl = email.replaceFirst("\\b(\\w)\\S*?(\\S@)(\\S)\\S*(\\S\\.\\S*)\\b", 
      "$1****$2$3****$4");
//=> a****e@g****l.com

答案 1 :(得分:2)

可以通过replaceAll函数来实现。

(?<!^).(?=.*?.@)

使用上述正则表达式并将匹配的字符替换为*

DEMO

String s = "example@gmail.com";
System.out.println(s.replaceAll("(?<!^).(?=.*?.@)", "*"));

<强>输出:

e*****e@gmail.com

<强>更新

使用以下正则表达式获取e*****e@g***l.com

之类的输出
String s = "example@gmail.com";
System.out.println(s.replaceAll("\\B.\\B(?=.*?\\.)", "*"));

<强>输出:

e*****e@g***l.com

答案 2 :(得分:2)

你可以尝试没有正则表达式

 String email = "example@gmail.com";
 int start = 1;
 int end = email.indexOf("@") - 1;
 StringBuilder sb = new StringBuilder(email);
 StringBuilder sb1=new StringBuilder();
 for(int i=start;i<end;i++){
    sb1.append("*");
 }
 sb.replace(start, end, sb1.toString());
 System.out.println(sb.toString());

Out put:

 e*****e@gmail.com

答案 3 :(得分:1)

我建议使用indexOfsubstring。使用替换,您可能会遇到gmail@gmail.com

等电子邮件的问题