我有一种电子邮件屏蔽方法。我需要用星号替换@签名之前的电子邮件中的字母。但是问题是,总应该精确地有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);
}

07-28 02:08