- json文件:
ps:地址可能不全 仅供参考
public String formatAddr(String address){
if (address == null){
return null;
}
//匹配特殊字符
String regEx = "[ _`~!@#$%^&*()+=|{}':;',\[\].<>/?~!@#¥%……&*-()——+|{}【】‘;:”“’。,、?]|n|r|t";
Pattern p = Pattern.compile(regEx);
Matcher m1 = p.matcher(address);
//处理特殊字符
if (m1.find()){
for (char c : regEx.toCharArray()) {
String value = String.valueOf(c);
if (address.contains(value)){
address = address.replace(value,"");
}
}
}
String regex="(?[^省]+自治区|.*?省|.*?行政区|.*?市)(?[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)";
Matcher m=Pattern.compile(regex).matcher(address);
String province=null,city=null;
while(m.find()){
province=m.group("province");
city=m.group("city");
}
if (province == null || city == null){
return null;
}
JSONArray jsonArray = readJson();
for (Object obj: jsonArray) {
JSONObject jsonObject = JSONUtil.parseObj(obj);
String label = jsonObject.getStr("label");
if (label.equals(province)){
//如果省份一致则对比城市是否一致
JSONArray childrens = jsonObject.getJSONArray("children");
if (childrens != null){
for (Object children : childrens) {
JSONObject cityObj = JSONUtil.parseObj(children);
if (cityObj.getStr("label").equals(city)){
return province + "-" + city;
}
}
}
}
}
return null;
}
public static JSONArray readJson(){
cn.hutool.core.io.resource.ClassPathResource classPathResource = new cn.hutool.core.io.resource.ClassPathResource("city.json");
InputStream inputStream = classPathResource.getStream();
try {
Reader reader = new InputStreamReader(inputStream,"UTF-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
String toString = sb.toString();
JSONArray jsonArray = JSONUtil.parseArray(toString);
return jsonArray;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
json文件:
将文件放在静态目录下即可
链接: https://pan.baidu.com/s/1dGOngPMp7jZas9OtSeGPPQ 提取码: r89j



