场景:根据不同类型实现不同内容脱敏
如:手机号,身份证,地址等
public enum EnumUtils {
/**
* 用户名value
*/
USERNAME{
@Override
public String apply(String value) {
return value.replaceAll("(\\S)\\S(\\S*)", "$1*$2");
}
},
/**
* 证件号(待定正则)
*/
ID_CARD{
@Override
public String apply(String value) {
return value.replaceAll("(\\d{4})\\d{2,15}(\\w{4})", "$1****$2");
}
},
/**
* 手机号
*/
PHONE{
@Override
public String apply(String value) {
return value.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
},
/**
* 地址
*/
ADDRESS{
@Override
public String apply(String value) {
return value.replaceAll("(\\S{3})\\S{2}(\\S*)\\S{2}", "$1****$2****");
}
};
public abstract String apply(String value);
}
调用直接:
类名.枚举.apply(参数);
同时也省去了if-else判断