省市信息保留,其他全部变为*
时间: 2023-08-16 07:06:43 浏览: 81
以下是一种保留省市信息的 Java 地址脱敏处理方法:
```java
public static String maskAddress(String address) {
if (address == null || address.isEmpty()) {
return "";
}
// 获取省市信息
String province = getProvinceFromAddress(address);
String city = getCityFromAddress(address);
// 将详细地址中的门牌号、楼层信息进行脱敏处理
address = address.replaceAll("\\d+", "*");
// 将区、县等地名信息进行脱敏处理
address = address.replaceAll("(?<=[\\u4e00-\\u9fa5]{2})[\\u4e00-\\u9fa5]+", "*");
// 将邮政编码进行脱敏处理
address = address.replaceAll("\\d{6}", "******");
// 将电话号码进行脱敏处理
address = address.replaceAll("(?<=\\d{3})\\d{4}(?=\\d{4})", "****");
// 拼接保留的省市信息和脱敏后的详细地址信息
StringBuilder sb = new StringBuilder();
if (!province.isEmpty()) {
sb.append(province);
}
if (!city.isEmpty()) {
sb.append(city);
}
sb.append(address);
return sb.toString();
}
// 获取地址中的省份信息
private static String getProvinceFromAddress(String address) {
String regex = "(?<=[\\u4e00-\\u9fa5]{2})[\\u4e00-\\u9fa5]+省";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(address);
if (matcher.find()) {
return matcher.group();
}
return "";
}
// 获取地址中的城市信息
private static String getCityFromAddress(String address) {
String regex = "(?<=[\\u4e00-\\u9fa5]{2})[\\u4e00-\\u9fa5]+市";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(address);
if (matcher.find()) {
return matcher.group();
}
return "";
}
```
例如,对于输入的地址字符串 `"北京市朝阳区朝阳路1号院3号楼2单元301室,邮编100020,电话13812345678"`,使用 `maskAddress` 方法进行脱敏处理后,输出的地址字符串为 `"北京市朝阳区*******,邮编******,电话138****5678"`。
阅读全文