用java写一个从字符串中找出电话号码,并对邮箱中的用户名进行脱敏处理的算法
时间: 2024-04-02 21:32:51 浏览: 47
好的,下面是一个简单的 Java 算法实现:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringProcessor {
public static void main(String[] args) {
String input = "我的电话号码是13812345678,我的邮箱是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{11}");
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;
}
}
```
这个算法通过正则表达式从输入字符串中提取出电话号码和邮箱。然后对邮箱中的用户名进行脱敏处理,用星号代替用户名中的部分字符。
阅读全文