import org.apache.commons.lang.StringUtils;
/**
* @Title: DesensitizedUtils
* @Description:脱敏工具
*/
public class DesensitizedUtils {
/**
* 前【left】位,后【right】位,其他用星号隐藏每位1个星号
* desensitization("123456789", -1, 0) return "123456789"
* desensitization("123456789", 0, -1) return "123456789"
* desensitization("123456789", -1, -1) return "123456789"
* desensitization("123456789", 0, 0) return "*********"
* desensitization("123456789", 1, 0) return "1********"
* desensitization("123456789", 0, 1) return "********9"
* desensitization("123456789", 1, 1) return "1*******9"
* desensitization("123456789", 2, 3) return "12****789"
*
* @param str
* @param left >= 0 正数
* @param right >= 0 正数
* @return
*/
public static String desensitization(String str, int left, int right) {
if (StringUtils.isBlank(str)) {
return "";
}
if (str.length() <= (left + right) || left < 0 || right < 0) {
return str;
}
return str.replaceAll("(?<=[\\s\\S]{" + left + "})[\\s\\S](?=[\\s\\S]{" + right + "})", "*");
}
}