public String maskPII(String S) {
if(S == null || S.length()==0){
return "";
}
String result = null;
// 开头字母是字母说明是邮箱
if(S.charAt(0)>='a' && S.charAt(0)<='z' ||(S.charAt(0)>='A' && S.charAt(0)<='Z')){
//用StringBuilder连接,效率更高
StringBuilder str = new StringBuilder();
String tmp[] = S.split("@");
//大写则需要转换成小写
if(tmp[0].charAt(0) >= 'a' && tmp[0].charAt(0) <='z'){
str.append(tmp[0].charAt(0));
} else{
char ch = (char)(tmp[0].charAt(0)+32);
str.append(ch);
}
// 中间五个*
for(int i=0;i<5;i++){
str.append('*');
}
// 大写转换小写
if(tmp[0].charAt(tmp[0].length()-1) >= 'a' && tmp[0].charAt(tmp[0].length()-1) <='z'){
str.append(tmp[0].charAt(tmp[0].length()-1));
} else{
char ch = (char)(tmp[0].charAt(tmp[0].length()-1)+32);
str.append(ch);
}
str.append('@');
for(int i=0;i<tmp[1].length();i++){
if(tmp[1].charAt(i)>='A' && tmp[1].charAt(i)<='Z'){
char ch=(char)(tmp[1].charAt(i)+32);
str.append(ch);
} else{
str.append(tmp[1].charAt(i));
}
}
result = str.toString();
} else{
StringBuilder tmp = new StringBuilder();
// 先把无用字符过滤掉
for(int i=0;i<S.length();i++){
if(S.charAt(i)>='0'&&S.charAt(i)<='9'){
tmp.append(S.charAt(i));
}
}
StringBuilder str = new StringBuilder();
int h=0;
// 国际电话
if(tmp.length()>10){
str.append('+');
for(h=0;h<tmp.length()-10;h++){
str.append('*');
}
str.append('-');
}
int j=h;
for(j=h;j<h+3;j++){
str.append('*');
}
str.append('-');
int m=j;
for(m=j;m<j+3;m++){
str.append('*');
}
str.append('-');
for(;m<tmp.length();m++){
str.append(tmp.charAt(m));
}
result = str.toString();
}
return result;
}
网友评论