在开发中,需要设计敏感词的检测与替换,比方说一些不文明用语,或者手机号在中间位以及身份证号码等等的一些敏感信息,我们就需要给他去进行替换成*号去表示
敏感词替换:
/**
* 过滤字符串中的敏感词汇
* @param content 文本
* @param sensitiveWord 敏感词汇
* @return
*/
public String filterSensitiveWords(String content,String sensitiveWord) {
if (content == null || sensitiveWord == null) {
return content;
}
//获取和敏感词汇相同数量的星号
String starChar = getStarChar(sensitiveWord.length());
//替换敏感词汇
return content.replace(sensitiveWord, starChar);
}
//大部分敏感词汇在10个以内,直接返回缓存的字符串
public static String[] starArr= {"*","**","***","****","*****","******","*******","********","*********","**********"};
/**
* 生成n个星号的字符串
* @param length
* @return
*/
private static String getStarChar(int length) {
if (length <= 0) {
return "";
}
//大部分敏感词汇在10个以内,直接返回缓存的字符串
if (length <= 10) {
return starArr[length - 1];
}
//生成n个星号的字符串
char[] arr = new char[length];
for (int i = 0; i < length; i++) {
arr[i] = '*';
}
return new String(arr);
}
public static void main(String[] args) {
String mg="这是一个敏感词";
SensitiveWords sensitiveWords = new SensitiveWords();
String s = sensitiveWords.filterSensitiveWords(mg,"敏感");
System.out.println(s);
}
敏感信息替换
找到想要以替换的位置,用spring的方法去截取位置,然后用replace的方法进行替换
String mg="13511112222";
System.out.println("原来的手机号"+mg);
String replace = mg.replace(mg.substring(3, 7), "****");
System.out.println("脱敏后的手机号"+replace);