我看过邮件服务将电子邮件ID显示为e*****e@gmail.com
,主要位于其恢复页面中。
所以我想将example@gmail.com
替换为e*****e@gmail.com
。
是否可以单独使用String#replace(String)
来实现它?或者我应该使用一些REGEX来实现它。
感谢您在adavance中提出的宝贵建议
答案 0 :(得分:2)
搜索正则表达式:
\b(\w)\S*?(\S)(?=@)(\S+)\b
替换模式:
$1****$2$3****$4
<强>代码:强>
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函数来实现。
(?<!^).(?=.*?.@)
使用上述正则表达式并将匹配的字符替换为*
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)
我建议使用indexOf
和substring
。使用替换,您可能会遇到gmail@gmail.com