php地址拆分省市县,一串标准的地址信息如何拆分出省市区

诚如上面所说,一段标准的地址如何能够拆分出省市区?那么什么才算是标准的地址呢,这里我们要说的就是像“北京市朝阳区XX路XXX号”、“山东省潍坊市寒亭区XXXX路XXX”这样的的省市区很规整的地址的拆分是如何实现的,“正则表达式”,一语中的!

好了,废话不多说,直接上代码:

7aa89283ff7e08ee33a5fbe13e1448f5.png

以下部分为程序源代码

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="(?[^省]+省|[^自治区]+自治区|.+市)(?[^自治州]+自治州|.+区划|[^市]+市|[^盟]+盟|[^地区]+地区)?(?[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?[^区]+区|.+镇)?(?.*)";

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="(?[^省]+省|[^自治区]+自治区|.+市)(?[^自治州]+自治州|.+区划|[^市]+市|[^盟]+盟|[^地区]+地区)?(?[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?[^区]+区|.+镇)?(?.*)";

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="(?[^省]+省|[^自治区]+自治区|.+市)(?[^自治州]+自治州|.+区划|[^市]+市|[^盟]+盟|[^地区]+地区)?(?[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?[^区]+区|.+镇)?(?.*)";

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));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值