字符串解析省市区

【Java 解析全国地址】Java 利用正则表达式完美解析全国省市区地址 Java 利用正则表达式完美解析全国省市区地址 一、问题场景描述 最近在项目中遇到了一个全国地址解析的一个场景,前端会传来一个字符串,后端需自动解析出 xx省xx市xx区+详细地址 的这种格式。 因为我们的数据来源于其他系统,客户地址在其他系统可能是随便填的,并不是正确的,所以前端也做了支持更改地址的操作。所以,我们的地址解析方式也是根据前端的地址格式来进行解析的。 二、解决方案 我也是第一次遇到这个场景,于是首先百度了一手,得到的解决方案有: 根据正则表达式进行解析; https://blog.csd 阅读详情

字符串解析省市区,工具类,复制粘贴可直接使用

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author zqh
 */
public class AddressResolutionUtil {
    private static String regex = "(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县|[^区]+区|.*?仔岛|.*?环岛)(?<county>[^区]+区|[^县]+县|[^市]+市|.+旗|.+海域|.+岛|[^镇]+镇|[^乡]+乡)?(?<town>[^区]+区|.+镇)?(?<village>.*)";

    static Map<String, Map<String, String>> cannotBeResolvedMap = new HashMap<>(64);

    static {
        putCannotBeResolvedMap("台湾省云林县斗六市", "台湾省", "云林县", "斗六市");
        putCannotBeResolvedMap("台湾省花莲县花莲市", "台湾省", "花莲县", "花莲市");
        putCannotBeResolvedMap("台湾省宜兰县宜兰市", "台湾省", "宜兰县", "宜兰市");
        putCannotBeResolvedMap("台湾省台东县绿岛乡", "台湾省", "台东县", "绿岛乡");
        putCannotBeResolvedMap("台湾省苗栗县苗栗市", "台湾省", "苗栗县", "苗栗市");
        putCannotBeResolvedMap("台湾省桃园县芦竹市", "台湾省", "桃园县", "芦竹市");
        putCannotBeResolvedMap("台湾省桃园县平镇市", "台湾省", "桃园县", "平镇市");
        putCannotBeResolvedMap("台湾省澎湖县马公市", "台湾省", "澎湖县", "马公市");
        putCannotBeResolvedMap("台湾省台东县台东市", "台湾省", "台东县", "台东市");
        putCannotBeResolvedMap("台湾省南投县南投市", "台湾省", "南投县", "南投市");
        putCannotBeResolvedMap("台湾省屏东县屏东市", "台湾省", "屏东县", "屏东市");
        putCannotBeResolvedMap("台湾省桃园县杨梅市", "台湾省", "桃园县", "杨梅市");
        putCannotBeResolvedMap("台湾省嘉义县太保市", "台湾省", "嘉义县", "太保市");
        putCannotBeResolvedMap("台湾省新竹县竹北市", "台湾省", "新竹县", "竹北市");
        putCannotBeResolvedMap("台湾省桃园县八德市", "台湾省", "桃园县", "八德市");
        putCannotBeResolvedMap("台湾省桃园县中坜市", "台湾省", "桃园县", "中坜市");
        putCannotBeResolvedMap("台湾省桃园县桃园市", "台湾省", "桃园县", "桃园市");
        putCannotBeResolvedMap("台湾省彰化县彰化市", "台湾省", "彰化县", "彰化市");
        putCannotBeResolvedMap("台湾省嘉义县朴子市", "台湾省", "嘉义县", "朴子市");

        putCannotBeResolvedMap("河南省新乡市辉县市", "河南省", "新乡市", "辉县市");
        putCannotBeResolvedMap("新疆维吾尔自治区克孜勒苏柯尔克孜乌恰县", "新疆维吾尔自治区", "克孜勒苏柯尔克孜", "乌恰县");
        putCannotBeResolvedMap("新疆维吾尔自治区克孜勒苏柯尔克孜阿克陶县", "新疆维吾尔自治区", "克孜勒苏柯尔克孜", "阿克陶县");
        putCannotBeResolvedMap("新疆维吾尔自治区克孜勒苏柯尔克孜阿合奇县", "新疆维吾尔自治区", "克孜勒苏柯尔克孜", "阿合奇县");
        putCannotBeResolvedMap("新疆维吾尔自治区克孜勒苏柯尔克孜阿图什市", "新疆维吾尔自治区", "克孜勒苏柯尔克孜", "阿图什市");
        putCannotBeResolvedMap("湖南省常德市津市市", "湖南省", "常德市", "津市市");
        putCannotBeResolvedMap("广东省中山市古镇镇", "广东省", "中山市", "古镇镇");
        putCannotBeResolvedMap("云南省普洱市西盟佤族自治县", "云南省", "普洱市", "西盟佤族自治县");
        putCannotBeResolvedMap("浙江省舟山群岛新区岱山岛西南部", "浙江省", "舟山群岛新区", "岱山岛西南部");
        putCannotBeResolvedMap("浙江省舟山群岛新区舟山本岛西北部", "浙江省", "舟山群岛新区", "舟山本岛西北部");
        putCannotBeResolvedMap("陕西省西咸新区泾河新城", "陕西省", "西咸新区", "泾河新城");
        putCannotBeResolvedMap("陕西省西咸新区沣东新城", "陕西省", "西咸新区", "沣东新城");
        putCannotBeResolvedMap("陕西省西咸新区沣西新城", "陕西省", "西咸新区", "沣西新城");
        putCannotBeResolvedMap("陕西省西咸新区秦汉新城", "陕西省", "西咸新区", "秦汉新城");
        putCannotBeResolvedMap("陕西省西咸新区空港新城", "陕西省", "西咸新区", "空港新城");
    }


    static void putCannotBeResolvedMap(String address, String province, String city, String county) {
        Map<String, String> map = new HashMap<>(4);
        map.put("province", province);
        map.put("city", city);
        map.put("county", county);
        cannotBeResolvedMap.put(address, map);
    }

    /**
     * 解析地址
     */
    public static Map<String, String> addressResolution(String address) {
        Optional<String> first = cannotBeResolvedMap.keySet().stream().filter(cannotBeResolvedAddress -> address.startsWith(cannotBeResolvedAddress)).findFirst();
        if (first.isPresent()) {
            return cannotBeResolvedMap.get(first.get());
        }
        Matcher m = Pattern.compile(regex).matcher(address);
        List<Map<String, String>> table = new ArrayList<Map<String, String>>();
        Map<String, String> row = null;
        while (m.find()) {
            row = new LinkedHashMap<>();
            row.put("province", Optional.ofNullable(m.group("province")).orElse("").replaceAll(" ", ""));
            row.put("city", Optional.ofNullable(m.group("city")).orElse("").replaceAll(" ", ""));
            row.put("county", Optional.ofNullable(m.group("county")).orElse("").replaceAll(" ", ""));
            row.put("town", Optional.ofNullable(m.group("town")).orElse("").replaceAll(" ", ""));
            row.put("village", Optional.ofNullable(m.group("village")).orElse("").replaceAll(" ", ""));
            table.add(row);
        }
        return row;
    }
}

 

python实现从字符串中识别出省市区信息 应用python中的transform函数实现字符串中省市区识别 阅读详情

相关推荐

字符串地址解析 省市区

C# 解析字符串中存在的省市区信息

weixin_44517477的博客 1011

java地址字符串解析省市区街道/乡/镇

字符串解析

qq_58697962的博客 2019

全面解析:详细地址抽取全国省市区工具包

每个节点表示一个行政区划单位,包括省份、城市、区县等不同层级。2.

weixin_30633869的博客 948

省市区随机获取 java_随机获取省市区-Groovy

import groovy.json.JsonSlurperimport java.util.Random//在soapui 中获取省市区列表def D = context.expand( '${cityTree#Response#$.data}' )//将字符串类型转为数组def slurper= new JsonSlurper()def articleListArray = slurper.p...

weixin_39959482的博客 1587

java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。

java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。

全国省市区名称文件

包含全国省市区所有的文件,格式为json,可以解析处理

js截取地址详细信息(除去省市区、市市区、自治区市区)

js截取地址详细信息(除去省市区、市市区、自治区市区)

下雨打伞干嘛的博客 446

C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装

Muduo is a multithreaded C++ network library based on the reactor pattern. muduo库的介绍就是:一个基于reactor反应堆模型的多线程C++网络库。 muduo网络库是C++语言开发的一个非常优秀的网络库,作者陈硕,muduo网络库在多线程环境下性能非常高,该系列文章会分享一些muduo库源码的知识,包括它的线程池源码...

大秦坑王的专栏 3万+

省市区字符串截取(正则)

//切割省市区县字符串 public static List<Map<String,String>> getAddressInfo(String address) { //1级 省 自治区 2级 市 自治州 地区 3级:区县市旗(镇?) Map<String,String> resultMap = new HashMap<>(4); String province=null,city=null,area=null,town=null,village

YIYIYIPEI的博客 1445

【STM32】CubeMx系列教程之移植FreeRTOS

本文详细介绍了在STM32F429上通过CubeMX工具移植FreeRTOS的方法。主要内容包括:1)配置系统时钟源,将TIM1替换SysTick作为时钟基准;2)FreeRTOS的创建与配置,包括任务创建、堆栈大小设置等;3)关键配置参数说明,如堆大小建议设为RAM的50%-70%;4)常用函数如堆栈监控、任务挂起/恢复等。文章提供了从基础配置到深入优化的完整移植指南,适合STM32开发者参考使用。

JackieJin123的博客 785

腾讯游戏安全组件运行异常的全面解决方案

在使用腾讯游戏时,玩家可能会遭遇游戏安全组件运行异常的问题,这不仅影响游戏的正常启动,还可能在游戏过程中引发一系列问题。本文将详细介绍解决腾讯游戏安全组件运行异常的几种方法,帮助玩家重拾游戏乐趣。腾讯游戏安全组件运行异常是一个复杂的问题,可能涉及服务设置、游戏更新、系统环境优化以及硬件与驱动检查等多个方面。最后,希望本文能帮助玩家顺利解决腾讯游戏安全组件运行异常的问题,让玩家能够无忧无虑地享受游戏带来的乐趣。首先,我们需要从系统的服务管理入手,检查与游戏安全组件相关的服务是否正常运行。

nntxthml的博客 5805

JS 分割地址省市区(含自治区,直辖市,县,自治县)

方法一: 通过js进行处理 var str = "湖北省武汉市江夏区文化大道110号"; console.log(that.getArea(str)); //省市区截取 getArea: function(str) { let area = {} let index11 = 0 let index1 = str.indexOf("省") if (index1 == -1) { index11 = str.indexOf("自治区") if (index11 != -1) {

Fxhani的博客 6944

解决Calibre中license的错误

本次解决了Calibre在Cadence 617 virtuoso版本中运行不了的错误,在遇到问题的时候,我也跟你们一样,首先是上网查询为什么运行不了呢?明明我安装了之后里面有Calibre的,我当时也是这样的疑惑,一点Calibre运行LVS的时候,一片空白,然后就出现了license的错误,后来点点点,看看看,搜搜搜,最终解决了这个问题。虚拟机是VMware16版本,cadence617,Calibre是2015版本。旨在记录遇到的实际问题。

yytu231的博客 1万+

JS 地址截取 省市区 (含自治区,直辖市,县,自治县)

var str = "湖北省武汉市江夏区文化大道110号"; // var str ="内蒙古自治区乌兰浩特市二区" // var str = "重庆市渝中区中兴路" // var str = "湖北省黄石市阳新县" // var str ="湖北省宜昌市长阳土家族自治县" // var str = "重庆市秀山土家族苗族自治县武陵南路武陵广场" console.log(that.getArea(str)); //省市区截取 getArea: fu

黑眼圈 8602

5G NR切换测量事件解析:从A1到B2的实战应用指南

本文深入解析5G NR切换测量事件,从A1到B2的实战应用指南。详细介绍了系统内切换事件(A1-A6)和系统间切换事件(B1-B2)的触发条件与配置建议,帮助优化网络性能。通过实际案例分享,展示如何调整参数提升切换成功率和降低乒乓切换率,适用于5G网络优化工程师。

tcp8optimizer的博客 512

AutoSAR系列讲解(深入篇)13.6-闪烁一颗LED灯 6

闪烁一颗LED灯:配置SWC和生成代码

雪云飞星的博客 1万+

JSON学习详细笔记(二)- - - JSON字符串的解析

目前,调用接口返回的数据一般都是JSON字符串的形式,所以,解析JOSN字符串拿到自己想要的数据就很常用了。在解析前,首先要明确,JOSN分为两种形式: 1.对象格式:{"key":value,"key1":value1} 其中的value可以是任意值; 2.数组格式:[e1,e2] 其中的e可以是任意值。 如下,是调用高德地址编码接口返回的JSON字符串,本文以解析并拿到地址的省市区信...

Jeffrey的博客 7237

十年芯片资深IC设计工程师面经系列(四)SDC约束

set_driving_cell:当我们的设计是模块级(Block level)的design时,我们的设计前面一般还有其他的设计,那么前面模块的输出便是我们模块的输入,5.1set_false_path:可以单独的时钟或者路径进行约束。set drive :当我们的设计是芯片级(Chip level)的顶层设计时,芯片外围电路要驱动的是负载较大的IO单元,故需要的驱动能力较强,:set_load 是指output端口的负载,设置的值会影响输出到端口的net上的电容,从而影响相应的路径延时。

weixin_47349046的博客 1773

通过正则表达式获取字符串中的省市区

【代码】通过正则表达式获取字符串中的省市区。

itScholar001的博客 2883

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

当前基于MQTT协议设计了一个实时图传系统,通过这个项目来演示,两个MQTT设备如何互相订阅,进行消息流转。 在阿里云服务器上创建2个设备,分为为设备A和设备B;设备A负责采集本地摄像头画面上传,设备B负责接收设备A上传的数据然后解析显示出来。在阿里云服务器上需要配置云产品流转,让设备A的数据上传后自动发送给设备B。这样就完成了视频画面数据的流转。不过因为阿里云的最大数据限制,每次最大发送10240字节的数据。

1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 利用正则表达式完美解析全国省市区地址展开

本文介绍了使用Java正则表达式解析全国省市区地址的方法。首先定义了一个匹配中文地址格式的正则表达式,包含"省"、"市"、"区"、"街道"等可选层级。然后通过Java的Pattern和Matcher类进行匹配,提取各层级信息并去除后缀。该方法灵活处理不同格式的地址,对缺失层级自动填充"未知"。通过调整正则表达式可以适应更精确或宽松的地址格式要求。

chuyouyinghe的专栏 687

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

iOS提取地址字符串中的省市区

iOS提取地址中的省市区 源码在这里: MMLocationParser 所使用的正则表达式: @"^(.*?省|.*?自治区|.*?行政区|.*?市)|(.*?市|.*?自治州|.*?地区|.*?行政单位)|(.*?区|.*?县|.*?旗|.*?海域|.*?岛|.*?镇)|.*" 先看一下效果: 传入上海市浦东新区金科路2000号 传入安徽省黄山市歙县桂林镇竦口村188号 批量解析: 源码在这里: MMLocationParser ...

MinMao的博客 858

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

两种方法:分割地址省市区(含自治区,直辖市,县,自治县)

【代码】两种方法:分割地址省市区(含自治区,直辖市,县,自治县)

hubert39641020的博客 2124
上一篇: Jenkins自动构建JAVA(完) (复制粘贴系列)
下一篇: leetcode-第7题-整数反转
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值