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
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值