遮蔽工具类

public static class MaskUtils {
    private final static int PHONE_MASK_LEN = 4;
    /**
     * 手机号中间4位遮蔽
     * @param strVal 手机号 13800001111
     * @return 138****1111
     */
    public static String phoneMask(String strVal){
        if(StringUtils.isEmpty(strVal)){
            return "";
        }
        StringBuilder sb = new StringBuilder(strVal);
        if (sb.length() > PHONE_MASK_LEN) {
            int start = (sb.length() - PHONE_MASK_LEN)/ 2;
            sb.replace(start, start + PHONE_MASK_LEN, getMaskStr(PHONE_MASK_LEN));
        }
        return sb.toString();
    }


    private static final int CARD_NO_MASK_LEN = 3;

    /**
     * 证件号遮蔽 只显示前3位 和 后3位  如:123456789
     * @param cardNo 证件号
     * @return 遮蔽后的证件号 如  123***789
     */
    public static String cardNoMask(String cardNo){
        if(StringUtils.isEmpty(cardNo)){
            return "";
        }
        StringBuilder sb = new StringBuilder(cardNo);
        //只展示前3位 和 后3位  所以长度要大于6
        if(sb.length() > CARD_NO_MASK_LEN * 2){
            int start = CARD_NO_MASK_LEN;
            int end = sb.length() - CARD_NO_MASK_LEN;
            int len = end - start;
            sb.replace(start, end, getMaskStr(len));
        }
        return sb.toString();
    }

    /**
     * 姓名倒数第二个遮蔽
     * @param strVal 姓名 如李白:*白  微诺亚 : 微*亚
     * @return 遮蔽后的姓名
     */
    public static String nameMask(String strVal){
        if(StringUtils.isEmpty(strVal)){
            return "";
        }
        StringBuilder sb = new StringBuilder(strVal);
        if (sb.length() > 1) {
            int start = sb.length() - 2;
            sb.replace(start, start + 1, getMaskStr(1));
        }
        return sb.toString();
    }

    private static final String MASK_STR = "*";

    private static String getMaskStr(int len) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            sb.append(MASK_STR);
        }
        return sb.toString();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值