地址解析步骤如下:
1、检查是否存在省份
2、如果存在省份,将会检查省份是否明确标注省,自治区,市(直辖市),特别行政区
的关键字,如果不存在,将会自动拼接上,便于后边正则匹配
3、检查市级地区是否明确标注市
关键字,如果没有标注,将会自动拼接上,如果市级地址中包含州,盟,自治州
等特殊情况的市级地区,将不会进行自动拼接(注:由于给出的公共的市级地区没有明确区分是市还是州或者是县,因此如果没有在地址中明确,将会统一拼接成市
)
4、通过正则表达式将重构后的地址进行分割
待分割地址:四川成都高新区xxx地址
分割后结果:
1、四川省
2,成都市
3,高新区
4,xxx地址
5、将地址中存在重复的部分进行去重,保留唯一的省市区地址
第一,定义公用的对象,在各个不同的步骤中会相应的使用到
/**
* 省级后缀
*/
private static String[] suffixs = {"省","市","自治区","特别行政区"};
/**
* 中国34个省,直辖市,自治区,特别行政区
*/
@SuppressWarnings("serial")
private static Map<Integer,String[]> maps = new HashMap<Integer,String[]>(){
{
/**
* 中国的23个省
*/
put(1, new String[]{"河北","山西","辽宁","吉林","黑龙江","江苏","浙江","安徽","福建","江西","山东","河南","湖北","湖南","广东","海南","四川","贵州","云南","陕西","甘肃","青海","台湾"});
/**
* 中国的4个直辖市
*/
put(2, new String[]{"北京","天津","上海","重庆"});
/**
* 中国的5个自治区
*/
put(3, new String[]{"广西","内蒙古","西藏","宁夏","新疆"});
/**
* 中国的2个特别行政区
*/
put(4, new String[]{"香港","澳门"});
/**
* 中国的市
*/
put(5, new String[]{"石家庄","唐山","秦皇岛","邯郸","邢台","保定","张家口","承德","沧州","廊坊","衡水",
"太原","大同","阳泉","长治","晋城","朔州","晋中","运城","忻州","临汾","吕梁",
"呼和浩特","包头","乌海","赤峰","通辽","鄂尔多斯","呼伦贝尔","巴彦淖尔","乌兰察布","兴安","锡林郭勒","阿拉善",
"沈阳","大连","鞍山","抚顺","本溪","丹东","锦州","营口","阜新","辽阳","盘锦","铁岭","朝阳","葫芦岛",
"长春","吉林","四平","辽源","通化","白山","松原","白城","延边",
"哈尔滨","齐齐哈尔","鸡西","鹤岗","双鸭山","大庆","伊春","佳木斯","七台河","牡丹江","黑河","绥化","大兴安岭",
"南京","无锡","徐州","常州","苏州","南通","连云港","淮安","盐城","扬州","镇江","泰州","宿迁",
"杭州","宁波","温州","嘉兴","湖州","绍兴","金华","衢州","舟山","台州","丽水",
"合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","巢湖","六安","亳州","池州","宣城",
"福州","厦门","莆田","三明","泉州","漳州","南平","龙岩","宁德",
"南昌","景德镇","萍乡","九江","新余","鹰潭","赣州","吉安","宜春","抚州","上饶",
"济南","青岛","淄博","枣庄","东营","烟台","潍坊","威海","济宁","泰安","日照","莱芜","临沂","德州","聊城","滨州","菏泽",
"郑州","开封","洛阳","平顶山","焦作","鹤壁","新乡","安阳","濮阳","许昌","漯河","三门峡","南阳","商丘","信阳","周口","驻马店",
"武汉","黄石","襄樊","十堰","荆州","宜昌","荆门","鄂州","孝感","黄冈","咸宁","随州","恩施",
"长沙","株洲","湘潭","衡阳","邵阳","岳阳","常德","张家界","益阳","郴州","永州","怀化","娄底","湘西",
"广州","深圳","珠海","汕头","韶关","佛山","江门","湛江","茂名","肇庆","惠州","梅州","汕尾","河源","阳江","清远","东莞","中山","潮州","揭阳","云浮",
"南宁","柳州","桂林","梧州","北海","防城港","钦州","贵港","玉林",