Java语言自制工具类-01

在日常工作,你是否经常遇见同一个东西用过很多次,每次都需要去做同样的事情,代码冗余,而且很无聊,都说同样的东西可以抽象出工具类来,每次直接调用就行。所以直接上代码💪

tip:通篇代码都是基于java语言的,jdk版本是1.8,其他情况不保证可运行。

脱敏工具类

手机号脱敏,保留前3位后4位

身份证号脱敏,保留后4位

银行卡号脱敏,保留后4位

保留前prefix位后suffix位

对指定位置序列进行脱敏

/**
 * 脱敏工具类
 */
public class MaskUtil {

    /**
     * 手机号脱敏,保留前3后4
     * ps:只处理长度为11的数字字符串
     *
     * @param phone 待脱敏手机号
     * @return 脱敏结果
     */
    public static String maskPhone(String phone) {
        if (Objects.isNull(phone) || phone.length() != 11 || NumberUtil.isNumStr(phone)) {
            return phone;
        }
        return mask(phone, 3, 4);
    }

    /**
     * 身份证号码脱敏,保留后4位
     * ps:身份证号是长度为18的字符串
     *
     * @param idNumber 待脱敏身份证号
     * @return 脱敏结果
     */
    public static String maskIdNumber(String idNumber) {
        if (Objects.isNull(idNumber) || idNumber.length() != 18) {
            return idNumber;
        }
        return mask(idNumber, 0, 4);
    }

    /**
     * 银行卡号脱敏,保留后4位
     * ps:银行卡号是长度大于4的字符串
     *
     * @param bankNum 待脱敏银行卡号
     * @return 脱敏结果
     */
    public static String maskBankNum(String bankNum) {
        if (Objects.isNull(bankNum) || bankNum.length() <= 4) {
            return bankNum;
        }
        return mask(bankNum, 0, 4);
    }

    /**
     * 字符串脱敏,保留前prefix位后suffix
     * ps:只处非空字符串 且保留的数字合法
     *
     * @param var    待脱敏字符串
     * @param prefix 保留前prefix位 非负整数
     * @param suffix 保留后suffix位 非负整数
     * @return 脱敏结果
     */
    public static String mask(String var, int prefix, int suffix) {
        // 待处理处理字符串为空
        if (Objects.isNull(var) || var.isEmpty()
                // 非法数字
                || prefix < 0 || suffix < 0
                // 不保留整个字符串
                || prefix + suffix == 0
                // 保留超过整个字符串
                || prefix + suffix >= var.length()) {
            return var;
        }

        char[] toDeal = var.toCharArray();

        // 需要脱敏的长度
        int len = var.length() - suffix;

        for (int i = 0; i < var.length(); i++) {
            if (i < prefix) {
                continue;
            }

            if (i >= len) {
                break;
            }

            toDeal[i] = '*';
        }
        return new String(toDeal);
    }

    /**
     * 对字符串指定位置序列进行脱敏
     * ps:只处理非空字符串 且序列位置合法
     *
     * @param var   待脱敏字符串
     * @param index 指定序列
     * @return 脱敏结果
     */
    public static String maskIndex(String var, int index) {
        if (Objects.isNull(var) || var.isEmpty() || var.length() < index) {
            return var;
        }
        char[] toDeal = var.toCharArray();
        toDeal[index - 1] = '*';
        return new String(toDeal);
    }
}

数字工具类

数字字符串判断呢

分转元 保留两位小数 四舍五入

元转分 保留两位小数 四舍五入

归零

数字字符串转数字,会做归零处理

public class NumberUtil {

    /**
     * 数字字符串判断
     *
     * @param var 待判断字符串
     * @return 是数字字符串,则返回true;否则,返回false
     */
    public static boolean isNumStr(String var) {
        if (Objects.isNull(var) || var.isEmpty()) {
            return false;
        }
        return var.matches("\\d{" + var.length() + "}");
    }

    /**
     * 分转元 保留两位小数 四舍五入
     * ps:空不处理
     *
     * @param var 待转字符串
     * @return 转换结果
     */
    public static BigDecimal f2Y(BigDecimal var) {
        if (Objects.isNull(var)) {
            return null;
        }
        return var.divide(new BigDecimal("100.00"), 2, RoundingMode.HALF_UP);
    }

    /**
     * 元转分 保留两位小数 四舍五入
     * ps:空不处理
     *
     * @param var 待转字符串
     * @return 转换结果
     */
    public static BigDecimal y2F(BigDecimal var) {
        if (Objects.isNull(var)) {
            return null;
        }
        return var.multiply(new BigDecimal("100.00")).setScale(2, RoundingMode.HALF_UP);
    }

    /**
     * 归零
     *
     * @param var 待处理数字
     * @return 处理结果
     */
    public static BigDecimal initNum(BigDecimal var) {
        return Objects.isNull(var) ? BigDecimal.ZERO : var;
    }

    /**
     * 数字字符串转数字,会做归零处理
     * ps:只做数字字符串处理,会抛异常,建议结合上面的 isNumStr 方法一起使用
     *
     * @param var 待处理数字字符串
     * @return 处理结果
     */
    public static BigDecimal initNum(String var) {
        return Objects.isNull(var) || var.isEmpty() ? BigDecimal.ZERO : new BigDecimal(var);
    }
}

结语

  1. 文章本意就是减轻开发时的冗余代码,主为方便。
  2. 代码没做性能处理,代码比较简单,也不存在什么性能问题。(看了代码就清楚)
  3. 后续累积到一定程度会继续出工具包。
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值