@ThreadSafe public class SensitiveWordMap extends Object implements IWordMap
| 构造器和说明 |
|---|
SensitiveWordMap() |
| 限定符和类型 | 方法和说明 |
|---|---|
boolean |
contains(String string,
IWordContext context)
是否包含
(1)直接遍历所有
(2)如果遇到,则直接返回 true
|
List<IWordResult> |
findAll(String string,
IWordContext context)
返回所有对应的敏感词
(1)结果是有序的
(2)为了保留所有的下标,结果从 v0.1.0 之后不再去重。
|
IWordResult |
findFirst(String string,
IWordContext context)
返回第一个对应的敏感词
|
void |
initWordMap(Collection<String> collection)
读取敏感词库,将敏感词放入HashSet中,构建一个DFA算法模型:
|
String |
replace(String target,
ISensitiveWordReplace replace,
IWordContext context)
替换所有敏感词内容
ps: 这里可以添加优化。
|
SensitiveCheckResult |
sensitiveCheck(String txt,
int beginIndex,
ValidModeEnum validModeEnum,
IWordContext context)
检查敏感词数量
(1)如果未命中敏感词,直接返回 0
(2)命中敏感词,则返回敏感词的长度。
|
public void initWordMap(Collection<String> collection)
initWordMap 在接口中 IWordMapcollection - 敏感词库集合使用对象代码 map 的这种一直递归。 参考资料:https://www.cnblogs.com/AlanLee/p/5329555.html https://blog.csdn.net/chenssy/article/details/26961957
public boolean contains(String string, IWordContext context)
contains 在接口中 IWordMapstring - 字符串context - 上下文建议使用快速返回模式public List<IWordResult> findAll(String string, IWordContext context)
findAll 在接口中 IWordMapstring - 原始字符串context - 上下文建议使用全部检测返回模式public IWordResult findFirst(String string, IWordContext context)
IWordMappublic String replace(String target, ISensitiveWordReplace replace, IWordContext context)
IWordMappublic SensitiveCheckResult sensitiveCheck(String txt, int beginIndex, ValidModeEnum validModeEnum, IWordContext context)
ISensitiveCheck(1)如果未命中敏感词,直接返回 0 (2)命中敏感词,则返回敏感词的长度。
ps: 这里结果进行优化, 1. 是否包含敏感词。 2. 敏感词的长度 3. 正常走过字段的长度(便于后期替换优化,避免不必要的循环重复)
sensitiveCheck 在接口中 ISensitiveChecktxt - 文本信息beginIndex - 开始下标validModeEnum - 验证模式context - 执行上下文Copyright © 2022. All rights reserved.