脱敏中间部分
/**
* 脱敏中间部分
*/
protected String formatToMaskMid(String src, int start, int xLength) {
return formatToMask(src, start, xLength, "$1$3");
}
脱敏左右部分
/**
* 脱敏左右部分
*/
protected String formatToMaskAbout(String src, int start, int xLength) {
return formatToMask(src, start, xLength, "$2");
}
号码串脱敏
修改正则自定义脱敏格式
/**
* 号码串脱敏
* @param src 纯数字字符串
* @param start 开始索引
* @param xLength 脱敏长度($1$3),保留长度($2)
* @param fmt 脱敏格式:$1$3首尾保留,$2中间保留
*/
private String formatToMask(String src, int start, int xLength, String fmt) {
if (StringHelper.isEmpty(src)) {
return "";
}
int end = src.length() - start - xLength;
if (start * xLength * end < 0) {
// 返回原字符串
return src;
}
String replace;
if ("$2".equals(fmt)) {
String s1 = getAppendStr(start);
String s3 = getAppendStr(end);
replace = s1 + "$2" + s3;
} else {
String s2 = getAppendStr(xLength);
replace = "$1"+s2+"$3";
}
// 修改这行代码可以自定义脱敏格式
return src.replaceAll("(\\w{"+start+"})(\\w{"+xLength+"})(\\w{"+end+"})", replace);
}
private String getAppendStr(int xLength) {
StringBuilder r = new StringBuilder();
for (int i = 0; i < xLength; i++) {
r.append("*");
}
return r.toString();
}