java快速实现敏感词屏蔽
先要有个敏感词词库,百度搜索一下就找得到。我的词库是txt文件sensitive-words.txt,把它放到类路径下即可。
这里稍作展示,没有在开车:
新建一个处理工具类,包括处理词汇和读入txt文件。
package com.ge.config;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class SensitiveWordsUtil {
/**
* 敏感词转化为字符串数组
*/
public static final String[] str = readFile().split(",");
/**
* 敏感词库路径
*/
public static final String pathname = "src\\main\\resources\\sensitive-words.txt";
/**
* @Description 将敏感词全部替换为等长度的"*"号。
*/
public static String outWords(String put) {
for (int i = 0; i < str.length; i++) {
if (put.contains(str[i])) {
StringBuilder text = new StringBuilder();
for (int j = 0; j < str[i].length(); j++) {
text.append("*");
}
put = put.replace(str[i], text);
}
}
return put;
}
/**
* @Description 返回是否有敏感词
*/
public static boolean isSensitive(String put) {
boolean status = false;
for (int i = 0; i < str.length; i++) {
if(put.contains(str[i])) {
status=true;
break;
}
}
return status;
}
/**
* @Description 读入TXT文件
*/
public static String readFile() {
StringBuilder sb=new StringBuilder();
try {
InputStream in = new FileInputStream(pathname);
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
// 一次读入一行数据//该步即不会第一位有逗号,也防止最后一位拼接逗号!
if (sb.length() > 0) {
sb.append(",");
}
sb.append(line);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
写个单元测试试一下。
package com.ge;
import com.ge.config.SensitiveWordsUtil;
import org.junit.jupiter.api.Test;
class DemoApplicationTests {
@Test
void find() {
String a= SensitiveWordsUtil.outWords("某某某爱女人");
System.err.println(a);
}
}
结果:
完成。
来源:CSDN
作者:还是改日吧
链接:https://blog.csdn.net/weixin_43424932/article/details/104115964