城市地域抽取

前言

适用情形:

在写接口的过程中有时候前端传来一个地域字符串,需要接口把地域字符串下级地域抽取出来。

eg1,
原始地域记录:江苏省苏州市姑苏区
前端传入字符串:江苏省
输出要求:苏州市
eg2,
原始地域记录:江苏省苏州市姑苏区
前端传入字符串:苏州市
输出要求:姑苏区
eg3,
原始地域记录:新疆XXX自治州XXX县
前端传入字符串:新疆
输出要求:XXX自治州

1.抽取原理:
用前端传入的字符串对地域进行字符串数组分割,再进行二级城市判定和分离抽取。

2.贴代码

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

public class ExtractArea {
    public static void main(String[] agrs) {
        String region = "江苏省苏州市";
        String area = "苏州市";
        System.out.println(explainArea(region,area));
    }

    private static String explainArea(String region, String area) {
        String[] city = region.split(area);
        String town = "";
        if (city.length == 3) {
            town = city[2];
        }
        else if (city.length == 2) {
            String temp = city[1];
            String areaName = "[市|区|盟]";
            Pattern pattern = Pattern.compile(areaName);
            Matcher matcher = pattern.matcher(temp);
            if (matcher.find()) {
                int end = matcher.end();
                town = temp.substring(0, end);
                System.out.println(town);
            }
            if (temp.contains("自治州")) {
                int a = temp.lastIndexOf("州");
                town = temp.substring(0, a + 1);
            }
        }
        return town;
    }
}

3.explainArea 是抽取函数,主要是为了二级城市的判定,二级城市就只有几种情况,XX市,XX区,XX盟(内蒙古),XX自治州(新疆)

4.Test
explainArea(“江苏省苏州市”, “江苏省”) —> 苏州市
explainArea(“江苏省苏州市”, “苏州市”) —> (空白字符)
explainArea(“江苏省苏州市虎丘区”, “苏州市”) —>虎丘区
explainArea(“内蒙古新安盟阿尔山市”, “内蒙古”) —>新安盟

5.本程序适用面比较窄,适合前端展示下级城市的统计数据。

猜你喜欢

转载自blog.csdn.net/qingquanyingyue/article/details/81209371