行政区划截取(Java)

import com.zdww.pyang.common.constants.Constants;
import org.apache.commons.lang3.StringUtils;

/**
 * @title: 行政区划的帮助类
 * @auther: 
 * @Date: 某年/某月/某日
 */
public final class AreaCodeHelper {


    private AreaCodeHelper() {
    }

    /**
     * 方法描述:截取areaCode
     */
    public static final String subAreaCode(String areaCode) {
        if (areaCode.endsWith("0000000000")) {
            areaCode = areaCode.substring(0, 2);
        } else if (areaCode.endsWith("00000000")) {
            areaCode = areaCode.substring(0, 4);
        } else if (areaCode.endsWith("000000")) {
            areaCode = areaCode.substring(0, 6);
        } else if (areaCode.endsWith("000")) {
            areaCode = areaCode.substring(0, 9);
        }
        return areaCode;
    }

    /**
     * 方法描述:截取areaCode
     */
    public static final String subAreaCodeByLevel(String areaCode, String level) {
        if ("1".equals(level)) {
            areaCode = areaCode.substring(0, 2);
        } else if ("2".equals(level)) {
            areaCode = areaCode.substring(0, 4);
        } else if ("3".equals(level)) {
            areaCode = areaCode.substring(0, 6);
        } else if ("4".equals(level)) {
            areaCode = areaCode.substring(0, 9);
        }
        return areaCode;
    }

    /**
     * 方法描述:获取行政区划的行政等级
     *
     * @param areaCode 行政区划
     * @return String
     */
    public static final String getAreaCodeLevel(String areaCode) {
        int length = getVaildCode(areaCode).length();
        String level = "1";
        if (length > 0 && length <= 2) {// 省级
            level = "1";
        } else if (length > 2 && length <= 4) { // 市级
            level = "2";
        } else if (length > 4 && length <= 6) { // 县级
            level = "3";
        } else if (length > 6 && length <= 9) { // 乡级
            level = "4";
        } else if (length > 9 && length <= 12) { // 村级
            level = "5";
        }
        return level;
    }


    public static String getVaildCode(String code) {
        if ("0000000000".equals(code.substring(2, 12))) {
            code = code.substring(0, 2);
        } else if ("00000000".equals(code.substring(4, 12))) {
            code = code.substring(0, 4);
        } else if ("000000".equals(code.substring(6, 12))) {
            code = code.substring(0, 6);
        } else if ("000".equals(code.substring(9, 12))) {
            code = code.substring(0, 9);
        }
        return code;
    }

    /**
     * 获取有效行政区划值,包括类似于621000000000 -> 6210
     *
     * @param: code
     * @return: java.lang.String
     * @date 某年/某月/某日
     */
    public static String getVaildCodeNew(String code) {
        if ("0000000000".equals(code.substring(2, 12))) {
            code = code.substring(0, 2);
        } else if ("00000000".equals(code.substring(4, 12))) {
            code = code.substring(0, 4);
        } else if ("000000".equals(code.substring(6, 12))) {
            code = code.substring(0, 6);
        } else if ("000".equals(code.substring(9, 12))) {
            code = code.substring(0, 9);
        }
        return code;
    }

    public static final String getAreaCodeLevelNew(String areaCode) {
        int length = getVaildCodeNew(areaCode).length();
        String level = "1";
        if (length > 0 && length <= 2) {// 省级
            level = "1";
        } else if (length > 2 && length <= 4) { // 市级
            level = "2";
        } else if (length > 4 && length <= 6) { // 县级
            level = "3";
        } else if (length > 6 && length <= 9) { // 乡级
            level = "4";
        } else if (length > 9 && length <= 12) { // 村级
            level = "5";
        }
        return level;
    }

    public static final String getParentAreaCodebyLevel(String areaCode, String level) {
        String subLevel = getAreaCodeLevel(areaCode);
        if (Integer.parseInt(subLevel) < Integer.parseInt(level)) {
            return "";
        } else if (Integer.parseInt(subLevel) == Integer.parseInt(level)) {
            return areaCode;
        } else {
            // 省级
            if ("1".equals(level)) {
                return areaCode.substring(0, 2) + "0000000000";
            } else if ("2".equals(level)) {
                // 市级
                return areaCode.substring(0, 4) + "00000000";
            } else if ("3".equals(level)) {
                // 县级
                return areaCode.substring(0, 6) + "000000";
            } else if ("4".equals(level)) {
                // 乡级
                return areaCode.substring(0, 9) + "000";
            } else {
                return areaCode;
            }
        }
    }

    public static final Boolean isNotNationwideAreaCode(String areaCode) {
        return StringUtils.isNotBlank(areaCode) && !Constants.NUMBER_0.equals(areaCode);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值