这篇文章主要给大家介绍了关于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 java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AddressResolutionUtil {
/**
* 解析地址
* @author lin
* @param address
* @return
*/
public static List<Map<String,String>> addressResolution(String address){
String regex="(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
Matcher m=Pattern.compile(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>();
province=m.group("province");
row.put("province", province==null?"":province.trim());
city=m.group("city");
row.put("city", city==null?"":city.trim());
county=m.group("county");
row.put("county", county==null?"":county.trim());
town=m.group("town");
row.put("town", town==null?"":town.trim());
village=m.group("village");
row.put("village", village==null?"":village.trim());
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("北京市市辖区朝阳区"));
System.out.println(addressResolution("内蒙古自治区兴安盟科尔沁右翼前旗"));
System.out.println(addressResolution("西藏自治区日喀则地区日喀则市"));
System.out.println(addressResolution("海南省省直辖县级行政单位中沙群岛的岛礁及其海域"));
运行结果:
完美!!!
总结
到此这篇关于java如何从地址串中解析提取省市区的文章就介绍到这了,更多相关java从地址串解析提取省市区内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:java如何从地址串中解析提取省市区(完美匹配中国所有地址)
基础教程推荐
猜你喜欢
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java数据结构之对象比较详解 2023-03-07
- springboot自定义starter方法及注解实例 2023-03-31
- java实现多人聊天系统 2023-05-19
- java基础知识之FileInputStream流的使用 2023-08-11
- Java并发编程进阶之线程控制篇 2023-03-07
- Java文件管理操作的知识点整理 2023-05-19
- Java实现查找文件和替换文件内容 2023-04-06
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java实现线程插队的示例代码 2022-09-03