public Map<String, Object> splitAddress(Map<String, Object> params) {
        LOG.info(" -> Call splitAddress... ");
        String xing="王李张刘陈杨黄赵周吴徐孙马胡朱郭何罗高林郑梁谢唐许冯宋韩邓彭曹曾田于肖潘袁董叶杜丁蒋程余吕魏蔡苏任卢沈姜姚钟崔陆谭汪石付贾范金方韦夏廖侯白孟邹秦尹江熊薛邱闫段雷季史陶毛贺龙万顾关郝孔向龚邵钱武扬黎汤戴严文常牛莫洪米康温代赖施覃安";
        String reg = "[\u4e00-\u9fa5]";
        String src = String.valueOf(params.get("autoaddress"));
        src = src.replaceAll(
                "[`~!@#$^&*()=|{}':;'\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]",
                "").replace(" ", "");
        Map<String, Object> result = new HashMap<String, Object>();
        Pattern pattern = Pattern
                .compile("(?<!\\d)(?:(?:1[34578]\\d{9})|(?:861[34578]\\d{9}))(?!\\d)");
        Matcher matcher = pattern.matcher(src);
        StringBuffer bf = new StringBuffer(64);
        if (matcher.find()) {
            bf.append(matcher.group());
            src = src.replace(bf.toString(), "");
        }
        String pro = "", city = "", county = "", xx = "",name="";
        List<Map<String, Object>> list = getDivision1();
        for (int i = 0; i < list.size(); i++) {// 省
            String xtproname = String.valueOf(list.get(i).get("name"));// 系统省名
            if (src.indexOf(xtproname) >=0
                    || src.indexOf(xtproname.substring(0, xtproname.length()-1)) >= 0) {
                pro = String.valueOf(list.get(i).get("code"));
                int aa=src.indexOf(xtproname) >= 0?src.indexOf(xtproname):src.indexOf(xtproname.substring(0,
                        xtproname.length()-1));//判断地址串位置在名字之前还是之后
                if(aa>0){
                    name=src.substring(0,aa);
                }
                src = src.replace(name, "");
                src = src.replace(xtproname, "");
                src = src.replace(xtproname.substring(0, xtproname.length()-1),
                        "");
                List<Map<String, Object>> xtcitylist = (List<Map<String, Object>>) list
                        .get(i).get("childs");
                
                for (int j = 0; j < xtcitylist.size(); j++) {// 市
                    String xtcityname = String.valueOf(xtcitylist.get(j).get(
                            "name"));// 系统市名
                    if (src.indexOf(xtcityname) >= 0
                            || src.indexOf(xtcityname.substring(0,
                                    xtcityname.length()-1)) >= 0||xtcitylist.size()==1) {//size=1为直辖市
                        city = String.valueOf(xtcitylist.get(j).get("code"));
                        src = src.replace(xtcityname, "");
                        src = src.replace(xtcityname.substring(0,xtproname.length()-1), "");
                        List<Map<String, Object>> xtcountylist = (List<Map<String, Object>>)((List<Map<String, Object>>) list
                                .get(i).get("childs")).get(j).get("childs");
                        for (int t = 0; t < xtcountylist.size(); t++) {// 市
                            String xtcountyname = String.valueOf(xtcountylist
                                    .get(t).get("name"));// 系统区/县名
                            if (src.indexOf(xtcountyname) >= 0
                                    || src.indexOf(xtcountyname.substring(0,
                                            xtcountyname.length()-1)) >= 0) {
                                county = String.valueOf(xtcountylist.get(t)
                                        .get("code"));
                                src = src.replace(xtcountyname, "");
                                src = src.replace(xtcountyname.substring(0,
                                                xtcountyname.length()-1), "");
                                break;
                            }
                        }
                        break;
                    }
                }
                break;
            }
        }
        if(name.length()<1){//名字还没有获取 则取后2-3位,根据百家姓?
            if(xing.indexOf(src.substring(src.length()-3,src.length()-2))>=0)
                name=src.substring(src.length()-3);
            else 
                name=src.substring(src.length()-2);
            src = src.replace(name, "");
        }
        xx = src;
        result.put("consignerProvince", pro);
        result.put("consignerCity", city);
        result.put("consignerCounty", county);
        result.put("consignerAddress", xx);
        result.put("consignerMobile", bf.toString());
        result.put("consignerName", name);
        result.put("status","1");
        return result;
    }

public List<Map<String, Object>> getDivision1() {
        LOG.info(" -> Call queryYdyj... ");
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("code", "0");
        List<Map<String, Object>> list = yyfxjSubMapper.getDivision1();
        List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
        List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
        List<Map<String, Object>> list3 = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> pro = list.get(i);
            if (String.valueOf(pro.get("parentcode")).equals("0")) {
                list2 = new ArrayList<Map<String, Object>>();
                for (int j = i + 1; j < list.size(); j++) {
                    Map<String, Object> city = list.get(j);
                    if (String.valueOf(city.get("parentcode")).equals(
                            String.valueOf(pro.get("code")))) {
                        list3 = new ArrayList<Map<String, Object>>();
                        for (int t = j + 1; t < list.size(); t++) {
                            Map<String, Object> county = list.get(t);
                            if (String.valueOf(county.get("parentcode"))
                                    .equals(String.valueOf(city.get("code")))) {
                                list3.add(county);
                            }
                        }
                        city.put("childs", list3);
                        list2.add(city);
                    }
                }
                pro.put("childs", list2);
                list1.add(pro);
            } else {
                break;
            }
        }

return list1;
    }

转载于:https://my.oschina.net/u/3974050/blog/2120462

java识别整段地址相关推荐

  1. 深入理解Java的整型类型:如何实现2+2=5?

    先看下这段神奇的Java代码: public static void main(String[] args) throws Exception {doSomethingMagic();System.o ...

  2. [小技巧][JAVA][转换]整型int与字符char相互转换

    借助String.valueOf()过渡 char -> String ->int char c; String str = String.valueOf(c); int i = Inte ...

  3. java识别系统_[Java教程]Java识别操作系统

    [Java教程]Java识别操作系统 0 2016-11-03 19:00:10 1 /** 2 * Created by xfyou on 2016/11/3. 3 */ 4 public clas ...

  4. Java识别验证码和图像处理

    阅读本文可能会解决的问题: ① Java识别验证码 ② Tess4J的使用和OCR识别 ③ JavaCV的使用二值化和灰度测试 ④ Java裁剪和缩放图片 ⑤ 如何生成数字&字母验证码 ⑥ . ...

  5. java 1900,java识别1900年时间的有关问题【急】

    求救java识别1900年时间的问题[急,在线等] 本帖最后由 kerafan 于 2013-08-12 15:35:23 编辑 在网上找了一个判断给定字符串是否为合法的日期时间字符串的方法.但是这个 ...

  6. JAVA 识别图片中二维码 opencv 识别精准

    JAVA 识别图片中二维码 opencv 识别精准 文章目录 JAVA 识别图片中二维码 opencv 识别精准 一.添加依赖 二.依赖配置 三.测试类 四.结果 提示:以下是本篇文章正文内容,下面案 ...

  7. JAVA识别身份证号码,H5识别身份证号码,tesseract-ocr识别(二)

    背景介绍 上一篇博文介绍了如何使用JAVA识别身份证号码,假设在截取了身份证号码信息的情况下,这一篇博文主要讨论一下思路吧,技术方面都是大家会的. 思路分析 H5拍照上传 -> 服务端截取身份证 ...

  8. java中将整型转换为字符型_JAVA的整型与字符串相互转换

    JAVA的整型与字符串相互转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Int ...

  9. java长整型时间转日期_C#长整型时间与java长整型时间转换

    最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...

最新文章

  1. 解决浏览器刷新vuex数据丢失问题
  2. elasticsearch 7.8.0 kibana 7.8.0安装部署
  3. 短信发送:webservice调用第三方接口发送短信
  4. SAP Cloud for Customer Lead OData服务的ETAG字段
  5. 通过Yeoman快速搭建AngularJS webapp应用的实践
  6. 6.边缘检测:梯度——梯度计算中滤波器的线性特性的利用_6
  7. 2月8日见!三星Galaxy S22系列新增樱花粉配色
  8. [转]malloc的内存用free释放后为何系统回收不了
  9. Java小项目:坦克大战(二)
  10. springboot微信登陆
  11. 写一本技术书到底有多赚?实话告诉你200万轻轻松松!
  12. (转自)何新:谈“玄”(二)
  13. wps纸张大小设置成A4_word2010页面设置:手把手教你添加页眉、页脚、页码、边框和底纹...
  14. 如何清理占用计算机内存,告诉你如何深度清理电脑内存
  15. Python自动化测试学习2
  16. 联通客户端访问电信服务器访问不了的解决方案
  17. Python02 雅克比迭代法 Gauss-Seidel迭代法 列选主元法 LU分解法(附代码)
  18. MATLAB数学建模之排列图和柱状图
  19. 《交互媒体专题设计》之疫情模拟 设计文档
  20. Unite 2017 | 使用Unity开发HoloLens应用实战技巧(下)

热门文章

  1. 用matlab实现任意点图片的旋转_Matlab实现图像旋转
  2. 手游虚拟机中连接不到服务器,自由幻想手游模拟器进不去游戏 登录失败解决办法...
  3. 【随笔】非科班转互联网到底有多大成本?
  4. 数字图像处理 -灰度变换 之 对数变换(Log Transformation)
  5. mosquitto教程(三)开启服务器及客户端发布和订阅
  6. 【入门指南】Hello World, I‘m Mo
  7. C语言之结构体及位段
  8. 教教大家vmware虚拟机安装win11的方法
  9. 数据库设计之概念结构设计---------E-R图详解(流程和关系)
  10. vue生命周期与vue请求