demo目录结构:
文档内容格式:
直接上代码(检索敏感词算法是从网上搜集参考的,有想法的可以搜索DFA算法研究下):
SensitiveFilterService.java
package com.example.sensitivedemo.test;
/**
* @Author : JCccc
* @CreateTime : 2019/7/30
* @Description :
**/
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
//敏感词过滤器:利用DFA算法 进行敏感词过滤
@SuppressWarnings("rawtypes")
public class SensitiveFilterService {
private Map sensitiveWordMap = null;
// 最小匹配规则
public static int minMatchTYpe = 1;
// 最大匹配规则
public static int maxMatchType = 2;
// 单例
private static SensitiveFilterService instance = null;
// 构造函数,初始化敏感词库
private SensitiveFilterService() {
sensitiveWordMap = new SensitiveWordInit().initKeyWord();
}
// 获取单例
public static SensitiveFilterService getInstance() {
if (null == instance) {
instance = new SensitiveFilterService();
}
return instance;
}
// 获取文字中的敏感词
public SetgetSensitiveWord(String txt, int matchType) {
SetsensitiveWordList = new HashSet();
for (int i = 0; i < txt.length(); i++) {
// 判断是否包含敏感字符
int length = CheckSensitiveWord(txt, i, matchType);
// 存在,加入list中
if (length > 0) {
sensitiveWordList.add(txt.substring(i, i + length));
// 减1的原