项目中打LOG, 因为有涉及到token的打印, 涉及安全, 不让全部显示, 写了两个简单小方法, 好用! 记录下
1. 对普通字符串mask, 让中间14位显示*****
public static String maskStr(String s) {
if (!TextUtils.isEmpty(s) && s.length() > 14) {
char[] a = s.toCharArray();
for (int i = (a.length - 14) / 2; i < (a.length + 14) / 2 ; i++) {
a[i] = '*';
}
return String.valueOf(a);
}
return s;
}
2. 方法二:
public static String maskStr(String s) {
if (!TextUtils.isEmpty(s) && s.length() > 10) {
char[] arr = s.toCharArray();
Arrays.fill(arr, 5, arr.length - 5, '*');
return new String(arr);
}
return s;
}
3. 对港澳台以及大陆手机号进行Mask:
public static String maskMobile(String input) {
if (TextUtils.isEmpty(input)) {
return "";
}
if (input.length() == 8) {
return input.replaceAll("(\\d{2})\\d{4}(\\d{2})", "$1****$2");
} else if (input.length() == 10) {
return input.replaceAll("(\\d{3})\\d{4}(\\d{3})", "$1****$2");
} else {
return input.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
}
4.隐藏邮箱部分字符:
email.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)", "$1************$3$4");