诚如上面所说,一段标准的地址如何能够拆分出省市区?那么什么才算是标准的地址呢,这里我们要说的就是像“北京市朝阳区XX路XXX号”、“山东省潍坊市寒亭区XXXX路XXX”这样的的省市区很规整的地址的拆分是如何实现的,“正则表达式”,一语中的!
好了,废话不多说,直接上代码:
以下部分为程序源代码
package com.hgzp.api.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AddressSplit {
public static String getProvince(String address)
{
String province="";
String regex="(?<province>[^省]+省|[^自治区]+自治区|.+市)(?<city>[^自治州]+自治州|.+区划|[^市]+市|[^盟]+盟|[^地区]+地区)?(?<county>[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
Matcher m=Pattern.compile(regex).matcher(address);
while(m.find()){
province=m.group("province");
}
if(province==null){
province="";
}
return province;
}
public static String getCity(String address)
{
String province="";
String city="";
String regex="(?<province>[^省]+省|[^自治区]+自治区|.+市)(?<city>[^自治州]+自治州|.+区划|[^市]+市|[^盟]+盟|[^地区]+地区)?(?<county>[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
Matcher m=Pattern.compile(regex).matcher(address);
while(m.find()){
province=m.group("province");
city = m.group("city");
}
if(city==null){
city="";
}
return city;
}
public static String getDistrict(String address)
{
String province="";
String city="";
String district="";
String regex="(?<province>[^省]+省|[^自治区]+自治区|.+市)(?<city>[^自治州]+自治州|.+区划|[^市]+市|[^盟]+盟|[^地区]+地区)?(?<county>[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
Matcher m=Pattern.compile(regex).matcher(address);
while(m.find()){
province=m.group("province");
city = m.group("city");
district = m.group("county");
}
if(district==null){
district="";
}
return district;
}
public static void main(String[] args){
//String address="新疆维吾尔自治区塔城地区沙湾县";
String address="新疆维吾尔自治区自治区直辖县级行政区划五家渠市";
//String address="北京市朝阳区复兴门内大街143号";
//String address="山东省潍坊市青州市开发区向阳路143号";
//String address="海南省省直辖县级行政区划临高县中沙群岛的岛礁及其海域";
System.out.println(AddressSplit.getProvince(address));
System.out.println(AddressSplit.getCity(address));
System.out.println(AddressSplit.getDistrict(address));
}
}
举报/反馈

跟我一起学编程

2539获赞 1901粉丝
学编程,做程序猿,我是认真的,一起来吧!
关注
0
0
收藏
分享