我有一种电子邮件屏蔽方法。我需要用星号替换@
签名之前的电子邮件中的字母。但是问题是,总应该精确地有5个星,并且第一个和最后一个元素不应被隐藏。
输入示例为:[email protected]
。输出:s*****[email protected]
因此,在电子邮件的第一个和最后一个字符之间有多少个字符并不重要。这是我的代码:
public static String maskEmail(String inputEmail){
return inputEmail.replaceAll("(?<=.).(?=[^@]*?.@)", "*");
}
我的方法掩盖了这封电子邮件,但是问题是我不知道如何准确地放置5星。
最佳答案
仅取第一个字母并用五个星号和从@
之前的字母开始的子字符串连接起来会容易得多:
public static String maskEmail(String inputEmail) {
return inputEmail.substring(0, 1) +
"*****" +
inputEmail.substring(inputEmail.indexOf('@') - 1);
}