Browse Source

修复bug

master
前端-胡立永 1 week ago
parent
commit
6484b03096
1 changed files with 28 additions and 5 deletions
  1. +28
    -5
      module-common/src/main/java/org/jeecg/modules/commonAddress/service/impl/CommonAddressServiceImpl.java

+ 28
- 5
module-common/src/main/java/org/jeecg/modules/commonAddress/service/impl/CommonAddressServiceImpl.java View File

@ -72,24 +72,47 @@ public class CommonAddressServiceImpl extends ServiceImpl<CommonAddressMapper, C
return null;
}
// 去除地址中的空格
address = address.replaceAll("\\s+", "");
String province = "";
String city = "";
String district = "";
// 匹配省份
// 匹配省份以省自治区直辖市结尾
java.util.regex.Pattern provincePattern = java.util.regex.Pattern.compile("^(.*?省|.*?自治区|北京市|天津市|上海市|重庆市)");
java.util.regex.Matcher provinceMatcher = provincePattern.matcher(address);
if (provinceMatcher.find()) {
province = provinceMatcher.group(1);
// 匹配城市
java.util.regex.Pattern cityPattern = java.util.regex.Pattern.compile(province + "(.*?市|.*?地区|.*?盟|.*?自治州)");
// 特殊处理直辖市北京天津上海重庆
if ("北京市".equals(province) || "天津市".equals(province) ||
"上海市".equals(province) || "重庆市".equals(province)) {
// 对于直辖市省份和城市是同一个
city = province;
// 直接匹配区县从省份名称后开始匹配
java.util.regex.Pattern municipalityDistrictPattern =
java.util.regex.Pattern.compile("(?<=" + java.util.regex.Pattern.quote(province) + ")(.*?区|.*?县)");
java.util.regex.Matcher municipalityDistrictMatcher = municipalityDistrictPattern.matcher(address);
if (municipalityDistrictMatcher.find()) {
district = municipalityDistrictMatcher.group(1);
}
// 返回直辖市的地址信息
return new String[]{province, city, district};
}
// 非直辖市的处理逻辑
// 匹配城市以市地区自治州结尾
java.util.regex.Pattern cityPattern = java.util.regex.Pattern.compile("(?<=" + java.util.regex.Pattern.quote(province) + ")(.*?市|.*?地区|.*?盟|.*?自治州)");
java.util.regex.Matcher cityMatcher = cityPattern.matcher(address);
if (cityMatcher.find()) {
city = cityMatcher.group(1);
// 匹配区县
java.util.regex.Pattern districtPattern = java.util.regex.Pattern.compile(province + city + "(.*?区|.*?县|.*?市|.*?旗)");
// 匹配区县以区旗结尾
java.util.regex.Pattern districtPattern = java.util.regex.Pattern.compile("(?<=" + java.util.regex.Pattern.quote(province) + java.util.regex.Pattern.quote(city) + ")(.*?区|.*?县|.*?市|.*?旗)");
java.util.regex.Matcher districtMatcher = districtPattern.matcher(address);
if (districtMatcher.find()) {
district = districtMatcher.group(1);


Loading…
Cancel
Save