手机号隐藏中间四位、用户名处理、银行卡截取后四位等敏感信息处理工具类

在我们平常开发中,我们有时候需要对用户名、手机号等信息进行一些敏感信息的处理(如:王小五 →王*五),还有银行卡截取后四位等,这里我整理成了一个工具类,分享给大家!

/**
 * 敏感信息处理工具类
 * @author Zhang
 */
public final class SensitiveInfoUtils {

    private SensitiveInfoUtils() {
        throw new AssertionError(" 不能产生实例");
   }

    /**
     * 名字脱敏处理
     * @param name 名字
     * @return 脱敏后的名字
     */
    public static String name(String name) {
        if (name == null || name.isEmpty()) { return "*"; }
        char[] chars = name.toCharArray();
        for (int i = 1; i < chars.length; i ++) {
            chars[i] = '*';
        }
        return new String(chars);
    }

    /**
     * 用户姓名脱敏
     * @param name 姓名
     * @return 脱敏后的姓名
     */
    public static String username(String name) {
        if (StringUtils.isEmpty(name) || name.length() == 1) { return "*"; }
        char[] chars = name.toCharArray();
        chars[1] = '*';
        for (int i = 2; i < chars.length - 1; i ++) {
            chars[i] = '*';
        }
        return new String(chars);
    }

    /**
     * 银行卡脱敏 (截取后4位)
     * @param cardNo 卡号
     * @return 脱敏后的卡号
     */
    public static String bankCard(String cardNo) {
        if (StringUtils.isEmpty(cardNo)) { return ""; }
        return cardNo.substring(cardNo.length() - 4);
    }

    /**
     * 手机号脱敏 (中间四位隐藏)
     * @param mobile 手机号
     * @return 脱敏后的手机号
     */
    public static String mobile(String mobile) {
        if (StringUtils.isEmpty(mobile)) { return ""; }
        char[] chars = mobile.toCharArray();
        int i = 3;
        chars[i ++] = '*';
        chars[i ++] = '*';
        chars[i ++] = '*';
        chars[i] = '*';
        return new String(chars);
    }

    /**
     * 将银行卡号内的空格去除
     * @param cardNo 卡号
     * @return 卡号
     */
    public static String trimCardNo(String cardNo) {
        char[] chars = cardNo.toCharArray();
        char[] card = new char[chars.length];
        int i = 0;
        for (char c : chars) {
            if (Character.isDigit(c)) {
                card[i ++] = c;
            }
        }
        return new String(card, 0, i);
    }

    /**
     * 判断字符串是否是数字
     * @param value 字符串
     * @return 为数字则返回<code>true</code>
     */
    public static boolean isNumber(String value) {
        if (value == null || value.isEmpty()) {
            return false;
        }

        int len = value.length();
        for (int i = 0; i < len; i ++) {
            if (!Character.isDigit(value.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * 判断该字符串是否为空
     * @param value 字符串
     * @return 为空则返回<code>true</code>
     */
    public static boolean isEmpty(String value) {
        return value == null || value.isEmpty();
    }

    /**
     * 1. 0~1之间的BigDecimal小数,格式化后失去前面的0,则前面直接加上0。
     * 2.传入的参数等于0,则直接返回字符串"0.00"
     * 3.大于1的小数,直接格式化返回字符串
     * @param obj传入的小数
     * @return
     */
    public static String formatToNumber(BigDecimal obj) {
        DecimalFormat df = new DecimalFormat("#.00");
        if(obj.compareTo(BigDecimal.ZERO)==0) {
            return "0.00";
        }else if(obj.compareTo(BigDecimal.ZERO)>0&&obj.compareTo(new BigDecimal(1))<0){
            return "0"+df.format(obj).toString();
        }else {
            return df.format(obj).toString();
        }
    }
}

如有不足之处,希望能够评论回复!

猜你喜欢

转载自blog.csdn.net/qq_40083897/article/details/83039865