场景:根据不同类型实现不同内容脱敏
如:手机号,身份证,地址等
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判断