java识别整段地址

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能识别收货地址Java import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.TimeZone; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Encoder; class Demo { public static String calcAuthorization(String source, String secretId, String secretKey, String datetime) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException { String signStr = "x-date: " + datetime + "\n" + "x-source: " + source; Mac mac = Mac.getInstance("HmacSHA1"); Key sKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), mac.getAlgorithm()); mac.init(sKey); byte[] hash = mac.doFinal(signStr.getBytes("UTF-8")); String sig = new BASE64Encoder().encode(hash); String auth = "hmac id=\"" + secretId + "\", algorithm=\"hmac-sha1\", headers=\"x-date x-source\", signature=\"" + sig + "\""; return auth; } public static String urlencode(Map<?, ?> map) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); for (Map.Entry<?, ?> entry : map.entrySet()) { if (sb.length() > 0) { sb.append("&"); } sb.append(String.format("%s=%s", URLEncoder.encode(entry.getKey().toString(), "UTF-8"), URLEncoder.encode(entry.getValue().toString(), "UTF-8") )); } return sb.toString(); } public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException { //云市场分配的密钥Id String secretId = "xxxx"; //云市场分配的密钥Key String secretKey = "xxxx"; String source = "market"; Calendar cd = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Lo

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值