import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AddressInfo {
public static Map<String, String> addressResolution1(String address) {
String regex = "(?<province>[^省]+^自治区|.*?自治区|.*?省|.*?行政区|.*?市)" ;
String cityRegex = "(?<city>上海城区|北京城区|天津城区|重庆城区|重庆郊县|[^市]+自治州|.*?地区|.*?行政区划|.*?行政单位|.+盟|市辖区|.*?市|.*?县)";
String countyRegex = "(?<county>某某1区|某某2区|[^区]+区)";
//我们是有自己定义的省市区和对应的编码,所以不能使用固定的。我将
//countyRegex = "(?<county>" + 数据库的区值 + "|[^区]+区)";处理的。
String detailAddress = "?(?<detail>.*)";
Matcher matcher = Pattern.compile(regex+cityRegex+countyRegex+detailAddress).matcher(address);
String province, city, county,detail;
Map<String, String> row = new HashMap<>();
while (matcher.find()) {
province = matcher.group("province");
row.put("province", province==null?null:province.trim());
city = matcher.group("city");
row.put("city", city==null?null:city.trim());
county = matcher.group("county");
row.put("county", county==null?null:county.trim());
detail = matcher.group("detail");
row.put("detail", detail==null?"":detail.trim());
}
return row;
}
public static void main(String[] args) {
System.out.println(addressResolution1("湖北省武汉市洪山区"));
System.out.println(addressResolution1("湖北省恩施土家族苗族自治州恩施市"));
System.out.println(addressResolution1("重庆市县秀山土家族苗族自治县"));
System.out.println(addressResolution1("海南省省直辖县级行政区划宜都市"));
}
}
定位地址匹配省市区(教你如何匹配你自己的数据库值)
最新推荐文章于 2024-05-17 01:59:05 发布