java_从证件号码中取出出生日期,其中要特殊处理下部分证件号码最后4位为*,有的是直接没有后四位

public static String extractBirthDate(String idCard) {
        // 判断证件号码长度
        if (idCard == null || idCard.length() < 14) {
            return null;
        }

        // 如果是14位证件号码,补充后四位为"****"
        if (idCard.length() == 14) {
            idCard = idCard + "****";  // 补充后四位为"****"
        }

        // 检查证件号码最后四位是否为 '*',如果是,则去除它
        if (idCard.substring(14, 18).equals("****")) {
            idCard = idCard.substring(0, 14); // 只取前14位
        }

        // 获取出生日期部分(第7到第14位,表示出生年月日)
        String birthDate = idCard.substring(6, 14);

        // 格式化为 YYYY-MM-DD 格式
        return birthDate.substring(0, 4) + "-" + birthDate.substring(4, 6) + "-" + birthDate.substring(6, 8);
    }
public static void main(String[] args) {
        // 测试
        String idCard1 = "110101199001010000";
        String idCard2 = "11010119900101****";
        String idCard3 = "11010119900101"; // 没有后四位的情况
        System.out.println(idCard3.length());

        System.out.println("出生日期1: " + extractBirthDate(idCard1)); // 1990-01-01
        System.out.println("出生日期2: " + extractBirthDate(idCard2)); // 1990-01-01
        System.out.println("出生日期3: " + extractBirthDate(idCard3)); // 1990-01-01
    }

java_从证件号码中取出出生日期,其中要特殊处理下部分证件号码最后4位为*,有的是直接没有后四位_第1张图片

你可能感兴趣的:(java,开发语言)