• 数据脱敏197


    脱敏

    public static final String DEFAULT_PAD_STR = "*"; //替换字符
    /**
    * 数据脱敏
    * 当字符创为空串或字符串长度小于等于 2 时,直接返回
    * 当【字符串总长度】减 {@code leftLen} 减 {@code rightLen} 小于等于 【字符串总长度】的三分之一时,则左右各展示【字符串总长度】的三分之一
    *
    * @param data 需要脱敏的数据
    * @param leftLen 左边展示几位
    * @param rightLen 右边展示几位
    * @param padStr 填充字符串,如果长度为 1, 则按位填充;否则否则直接填充,可用于颜文字填充场景
    * @return
    */
    public static String desensitization(String data, Integer leftLen, Integer rightLen, String padStr) {
    int length = StringUtils.length(data);
    if (StringUtils.isBlank(data) || length <= 2) {
    return data;
    }

    int oneThird = length / 3;

    // 设置默认值
    leftLen = Objects.isNull(leftLen) ? oneThird : leftLen;
    rightLen = Objects.isNull(rightLen) ? oneThird : rightLen;
    padStr = StringUtils.isBlank(padStr) ? DEFAULT_PAD_STR : padStr;

    if (length - leftLen - rightLen <= oneThird) {
    leftLen = oneThird;
    rightLen = oneThird;
    }


    String left = StringUtils.left(data, leftLen);
    String right = StringUtils.right(data, rightLen);
    if (StringUtils.length(padStr) == 1) {
    return StringUtils.rightPad(left, data.length() - rightLen, padStr).concat(right);
    }
    return left + padStr + right;
    }
  • 相关阅读:
    promise实现(未实现微任务)
    fastclick猜的原理
    js进制
    如何造一个好的组件库【有空就更新】
    BEM的命名
    unicode、utf-32、utf-8、utf-16
    getElementsByTagName、getElementsByClassName与querySelectorAll的区别
    为什么vue中没有事件委托/事件代理的概念
    vscode注释param
    复制dom
  • 原文地址:https://www.cnblogs.com/Ai-Hen-Jiao-zhi/p/13948396.html
Copyright © 2020-2023  润新知