用java写一个从字符串中找出固定电话,并对邮箱中的用户名进行脱敏处理的算法
时间: 2024-03-23 07:36:49 浏览: 92
好的,这里是一个简单的 Java 算法实现:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringProcessor {
public static void main(String[] args) {
String input = "我的固定电话是010-12345678,我的邮箱是abc123@qq.com";
String phone = extractPhone(input);
String email = extractEmail(input);
String maskedEmail = maskEmail(email);
System.out.println("固定电话:" + phone);
System.out.println("邮箱:" + maskedEmail);
}
// 从字符串中提取固定电话
public static String extractPhone(String input) {
Pattern pattern = Pattern.compile("\\d{3}-\\d{8}|\\d{4}-\\d{7}");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return matcher.group();
} else {
return null;
}
}
// 从字符串中提取邮箱
public static String extractEmail(String input) {
Pattern pattern = Pattern.compile("\\w+@\\w+\\.\\w+");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return matcher.group();
} else {
return null;
}
}
// 对邮箱中的用户名进行脱敏处理
public static String maskEmail(String email) {
int atIndex = email.indexOf("@");
String username = email.substring(0, atIndex);
String maskedUsername = username.replaceAll("(?<=.{2}).(?=.*@)", "*");
String domain = email.substring(atIndex);
return maskedUsername + domain;
}
}
```
这个算法同样使用正则表达式从输入字符串中提取出固定电话和邮箱。然后对邮箱中的用户名进行脱敏处理,用星号代替用户名中的部分字符。需要注意的是,固定电话的格式可能有两种,所以正则表达式中使用了“|”符号来表示两种格式。
阅读全文