|
|
@ -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); |
|
|
|