北斗信号源
java从地址串中解析提取省市区-完美匹配中国所有地址前段时间项⽬中要解析android定位传的⼀个地址串 分别存⼊ 省 市 区 字段,⽹上的 写正则 的⽅法⼤都只能解析 xx省xx市xx区 这样的
⼤众化地址,⽽对于⼀些命名⽐较特别的地址(⽐如:西藏⾃治区⽇喀则地区⽇喀则市 / 海南省省直辖县级⾏政单位中沙岛的岛礁及其海 域)就会出问题,我就将正则式进⾏了修改完善。废话不多说 直接上代码:
package com.jt.util;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import Matcher;
import Pattern;
public class AddressResolutionUtil {
/**
* 解析地址
* @author lin
* @param address
* @return
*/
public static List<Map<String,String>> addressResolution(String address){
String regex="(?<province>[^省]+⾃治区|.*?省|.*?⾏政区|.*?市)(?<city>[^市]+⾃治州|.*?地区|.*?⾏政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|. Matcher m=Patternpile(regex).matcher(address);
如图是某水上打捞船String province=null,city=null,county=null,town=null,village=null;
List<Map<String,String>> table=new ArrayList<Map<String,String>>();
Map<String,String> row=null;
while(m.find()){
row=new LinkedHashMap<String,String>();
血氧仪测试方法
up("province");
row.put("province", province==null?"":im());
up("city");
row.put("city", city==null?"":im());
up("county");
row.put("county", county==null?"":im());
up("town");
row.put("town", town==null?"":im());
樱桃去核机
up("village");
row.put("village", village==null?"":im());
table.add(row);
}
return table;
}
public static void main(String[] args) {
System.out.println(addressResolution("湖北省武汉市洪⼭区")); }
}
下⾯对⼏个代表性的地址进⾏测试:
System.out.println(addressResolution("湖北省武汉市洪⼭区"));
System.out.println(addressResolution("湖北省恩施⼟家族苗族⾃治州恩施市"));
System.out.println(addressResolution("北京市市辖区朝阳区"));
led工矿灯melenledSystem.out.println(addressResolution("内蒙古⾃治区兴安盟科尔沁右翼前旗"));
System.out.println(addressResolution("西藏⾃治区⽇喀则地区⽇喀则市"));
System.out.println(addressResolution("海南省省直辖县级⾏政单位中沙岛的岛礁及其海域"));火石轮
运⾏结果:
完美
还有那些奇怪地址 欢迎留⾔……