ReplaceAll用定义的替换号码Java

Cas*_*sie 2 java regex string replaceall

我有一个电子邮件屏蔽方法.我需要在@与星星签名之前替换电子邮件中的字母.但问题是总是应该有5颗星,并且不应该隐藏第一个和最后一个元素.样本输入将是:someemail@gmail.com.输出:s*****l@gmail.com 因此,电子邮件中第一个和最后一个字符之间的字符数无关紧要.这是我的代码:

public static String maskEmail(String inputEmail){
    return inputEmail.replaceAll("(?<=.).(?=[^@]*?.@)", "*");
}
Run Code Online (Sandbox Code Playgroud)

我的方法掩盖了这封电子邮件,但问题是我不知道如何准确地放置5颗星.

Mur*_*nik 5

只需要取第一个字母并将其与五个星号和从字母前面的字母开始的子字符串连接起来就会简单得多@:

public static String maskEmail(String inputEmail) {
    return inputEmail.substring(0, 1) + 
           "*****" + 
           inputEmail.substring(inputEmail.indexOf('@') - 1);
}
Run Code Online (Sandbox Code Playgroud)