开发日常工具类总结

  1. 对包含身份证号码进行脱敏
    /**
     * Desc:身份证号码脱敏
     * @param idStr
     * @return java.lang.String
     * @date 2021/12/6 13:25
     */

    public static String hideIdCard(String idStr) {
        if (StringUtils.isNotEmpty(idStr)) {
            Pattern IDCARD_PATTERN = Pattern.compile("((\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9]|[Xx])|\\d{15})");
            Matcher matcher = IDCARD_PATTERN.matcher(idStr);
            if (matcher.find()) {
                StringBuilder idCardBuffer = new StringBuilder(matcher.group(0));
                int index = idStr.indexOf(idCardBuffer.toString());
                String header = idStr.substring(0, index);
                String tail = idStr.substring(idCardBuffer.length() + header.length());
                if (idCardBuffer.length() == 15) {
                    return header + idCardBuffer.replace(3, 13, "**********").toString() + tail;
                } else {
                    return header + idCardBuffer.replace(3, 16, "*************").toString() + tail;
                }
            }
        }
        return idStr;
    }
  1. 对手机号码前三后四脱敏
    /**
     * Desc:手机号码前三后四脱敏
     * @param mobile
     * @return java.lang.String
     * @date 2021/12/14 8:48
     */

    public static String encryptMobile(String mobile) {
        if (StringUtils.isNotEmpty(mobile)) {
            Pattern IDCARD_PATTERN = Pattern.compile("(\\d{3})\\d{4}(\\d{4})");
            Matcher matcher = IDCARD_PATTERN.matcher(mobile);
            if (matcher.find()) {
                StringBuilder idCardBuffer = new StringBuilder(matcher.group(0));
                int index = mobile.indexOf(idCardBuffer.toString());
                String header = mobile.substring(0, index);
                String tail = mobile.substring(idCardBuffer.length() + header.length());
                if (idCardBuffer.length() == 11) {
                    return header + idCardBuffer.replace(3, 7, "****").toString() + tail;
                }
            }
        }
        return mobile;
    }
  1. Map中交换key与value位置,相同value的key用集合进行存储
    /**
     * Desc:交换key与value位置,相同value的key用集合进行存储
     * @param map
     * @return java.util.Map<T, java.util.List < S>>
     * @date 2021/12/16 10:20
     */

    public static <T,S> Map<T, List<S>> exchangeKeyValue(Map<S,T> map){
        Map<T, List<S>> stringListHashMap = new HashMap<>(16);
        for (Map.Entry<S, T> entry : map.entrySet()) {
            S key = entry.getKey();
            T value = entry.getValue();
            if (stringListHashMap.containsKey(value)) {
                List<S> list3 = stringListHashMap.get(value);
                list3.add(key);
                stringListHashMap.put(value, list3);
            } else {
                List<S> list4 = new ArrayList<>();
                list4.add(key);
                stringListHashMap.put(value, list4);
            }
        }
        return stringListHashMap;
    }
  1. 固话进行脱敏
    /**
     * Desc:固话进行脱敏
     *
     * @param telnum
     * @return java.lang.String
     * @date 2021/12/20 17:17
     */
    public static String phoneNum(String telnum) {

        if (StringUtils.isNotEmpty(telnum)) {
            Pattern pattern = Pattern.compile("(\\d{4})-(\\d{4})(\\d{4})");
            Matcher matcher = pattern.matcher(telnum);
            return matcher.replaceAll("$1-****$3");
        }
        return telnum;
    }
  1. 名字脱敏
   /**
     * 名字脱敏
     * 规则,张三丰,脱敏为:张**
     *
     * @param fullName
     * @return
     */
    private static String nameDesensitization(String fullName) {
        if (!Strings.isNullOrEmpty(fullName)) {
            String name = StringUtils.left(fullName, 1);
            return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
        }
        return fullName;
    }
  1. 地址脱敏
   /**
     * Desc: 地址脱敏
     * @param address
     * @return java.lang.String
     * @date 2021/12/21 9:16
     */

    private static String desensitizedAddress(String address){
        if (!Strings.isNullOrEmpty(address)) {
            return StringUtils.left(address, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(address, address.length()-11), StringUtils.length(address), "*"), "***"));
        }
        return address;
    }
  1. 身份证号码进行脱敏
    /**
     * Desc:身份证号码进行脱敏
     * @param id
     * @return java.lang.String
     * @author Myf
     * @date 2021/12/21 9:23
     */

    public static String idEncrypt(String id) {
        if (StringUtils.isEmpty(id) || (id.length() < 8)) {
            return id;
        }
        return id.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值