网上有很多根据正则表达式的方式,从地址中解析出省市区行政区划,
最近跟天猫对接,也碰到根据地址解析出省市区,下面用Java实现地址解析小工具,以便自己查阅!
地址解析小工具实现功能点:
1.根据输入的详细地址,可以自动解析出省市区街道四级行政区域
2.地址输入不规则地址的解析,例如“辉煌国际3号楼”可解析出“北京市海淀区上地十街辉煌国际3号楼”
3.地址输入不规则地址的解析,例如“浙江省 杭州市 西湖区 塘苗路18号 华星现代产业园”可解析出“浙江省杭州市西湖区塘苗路18号华星现代产业园”
4.解析的结果以Map<String,String>返回,例如{ province=北京市, city=北京市, area=海淀区, street=上地十街}
源码和具体的使用细则,可以到下载源码及使用说明 :
https://gitee.com/addresstool/address
package com.address.base;
import org.address.AddressCut;
import org.address.entity.Word;
import org.address.license.License;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class AddressCutTest {
public static void main(String[] args) {
new License();
AddressCut ss = new AddressCut();
List<Word> words;
//正常地址
words = ss.cutAddress("浙江省杭州市桐庐县县城白云源路1018路中艺艺锦绣锦绣名都");
System.out.println(words);
//城市名修正
words = ss.cutAddress("湖北省武汉汉阳区汉阳大道10号花果山5栋1单元101户");
System.out.println(words);
// 省份修正 城市修正
words = ss.cutAddress("湖北武汉汉阳区汉阳大道10号花果山5号楼1单元101室");
System.out.println(words);
// 城市修正
words = ss.cutAddress("江苏省镇江市学府路花果小区");
System.out.println(words);
// 省份补全 城市补全
words = ss.complete(ss.cutAddress("佛祖岭社区汉阳大道10号花果山5号楼1单元101室"));
System.out.println(words);
System.out.println(ss.complete(ss.cutAddress("湖北省\t武汉市\t汉阳\t汉阳-七里庙-永丰路\t永丰乡政府小区\n")));
System.out.println(ss.complete(ss.cutAddress("湖北省 武汉市 汉阳永丰路 永丰乡政府小区")));
System.out.println(ss.complete(ss.cutAddress("江苏省南京市江宁区上善路6号 汤山颐和府3栋一单元802室")));
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
Date date = new Date(System.currentTimeMillis());
System.out.println("开始时间 : " + formatter.format(date));
int cnt=0;
for(int i=0;i<500;i++){
ss.complete(ss.cutAddress("湖北省 武汉市 汉阳永丰路 永丰乡政府小区"));
}
System.out.println("解析地址条数 : " + cnt + "条");
date = new Date(System.currentTimeMillis());
System.out.println("结束时间 : " + formatter.format(date));
}
}
打印结果
[{province:浙江省}, {city:杭州市}, {county:桐庐县}, {unknown:县城}, {road:白云源路}, {road_no:1018}, {aoi:路中艺艺锦绣锦绣名都}]
[{province:湖北省}, {city:武汉市}, {county:汉阳区}, {road:汉阳大道}, {road_no:10}, {aoi:花果山}, {building:5}, {unit:1}, {room:101}]
[{province:湖北省}, {city:武汉市}, {county:汉阳区}, {road:汉阳大道}, {road_no:10}, {aoi:花果山}, {building:5}, {unit:1}, {room:101}]
[{province:江苏省}, {city:镇江市}, {road:学府路}, {aoi:花果小区}]
[{community:佛祖岭社区}, {road:汉阳大道}, {road_no:10}, {aoi:花果山}, {building:5}, {unit:1}, {room:101}]
[{province:湖北省}, {province:湖北省}, {unknown:}, {city:武汉市}, {aoi:汉阳 汉阳-七里庙-}, {road:永丰路}, {aoi:永丰乡政府小区}]
[{province:湖北省}, {city:武汉市}, {county:汉阳区}, {road:永丰路}, {aoi:永丰乡政府小区}]
[{province:江苏省}, {city:南京市}, {county:江宁区}, {road:上善路}, {road_no:6}, {aoi:汤山颐和府}, {building:3}, {unit:1}, {room:802}]
开始时间 : 2024-06-21 at 15:30:49 CST
解析地址条数 : 0条
结束时间 : 2024-06-21 at 15:30:49 CST