用java写一个从字符串中找出邮箱,并对邮箱中的用户名进行脱敏处理的算法
时间: 2024-03-22 20:42:01 浏览: 62
好的,以下是一个用 Java 写的从字符串中找出邮箱并对邮箱中的用户名进行脱敏处理的算法:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailMasker {
public static void main(String[] args) {
String text = "你好,我的邮箱是example@example.com,请联系我。";
String maskedText = maskEmail(text);
System.out.println(maskedText);
}
private static String maskEmail(String text) {
String regex = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String email = matcher.group();
String[] parts = email.split("@");
String username = parts[0];
String domain = parts[1];
String maskedUsername = maskString(username);
String maskedEmail = maskedUsername + "@" + domain;
text = text.replace(email, maskedEmail);
}
return text;
}
private static String maskString(String str) {
int length = str.length();
int start = length / 3;
int end = length - start;
String mask = "****";
return str.substring(0, start) + mask + str.substring(end);
}
}
```
这个算法使用正则表达式找出字符串中的邮箱,对用户名进行脱敏处理后将整个邮箱替换为脱敏后的邮箱。`maskString` 方法用来对用户名进行脱敏处理,将用户名的前1/3和后1/3保留,中间用 "****" 代替。
阅读全文