ReplaceAll 具有定义的替换编号 Java
ReplaceAll with defined replacement number Java
我有一个电子邮件屏蔽方法。我需要在 @
用星星签名之前替换电子邮件中的字母。但问题是总是应该恰好有 5 颗星,并且不应该隐藏第一个和最后一个元素。
示例输入为:someemail@gmail.com
。输出:s*****l@gmail.com
因此,电子邮件中第一个和最后一个字符之间有多少个字符并不重要。这是我的代码:
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);
}
这个怎么样:
inputEmail.replaceAll("(?<=^.).*(?=.@)", "*****")
或者这样:
inputEmail.replaceAll("(.).*(.@)", "*****")
请注意,这仅在 @ 前至少有 2 个字符时有效。
试试这个代码:
import java.util.Arrays;
public class HelloWorld{
public static String StrToAsterisk(String email){
if (email == null) return "";
int flag = email.indexOf("@");
if (flag < 0) return "";
StringBuilder sb = new StringBuilder();
sb.append(email.charAt(0));
sb.append("*****");
sb.append(email.substring(flag-1));
return sb.toString();
}
public static void main(String []args){
System.out.println(StrToAsterisk("someemail@gmail.com"));
//input : someemail@gmail.com
//output: s*****l@gmail.com
}
}
我有一个电子邮件屏蔽方法。我需要在 @
用星星签名之前替换电子邮件中的字母。但问题是总是应该恰好有 5 颗星,并且不应该隐藏第一个和最后一个元素。
示例输入为:someemail@gmail.com
。输出:s*****l@gmail.com
因此,电子邮件中第一个和最后一个字符之间有多少个字符并不重要。这是我的代码:
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);
}
这个怎么样:
inputEmail.replaceAll("(?<=^.).*(?=.@)", "*****")
或者这样:
inputEmail.replaceAll("(.).*(.@)", "*****")
请注意,这仅在 @ 前至少有 2 个字符时有效。
试试这个代码:
import java.util.Arrays;
public class HelloWorld{
public static String StrToAsterisk(String email){
if (email == null) return "";
int flag = email.indexOf("@");
if (flag < 0) return "";
StringBuilder sb = new StringBuilder();
sb.append(email.charAt(0));
sb.append("*****");
sb.append(email.substring(flag-1));
return sb.toString();
}
public static void main(String []args){
System.out.println(StrToAsterisk("someemail@gmail.com"));
//input : someemail@gmail.com
//output: s*****l@gmail.com
}
}