今天我想跟大家聊点有趣又实用的东西:一个极简版的 Java 敏感词检测工具。这东西说实话,不管是做聊天系统还是内容审核,都是个绕不过去的坎儿。
想想看,咱们写个聊天平台,总不能让人发些“危险文字”吧?(程序员的“危险”,你懂的🤭)
一、先引入 Maven 依赖
pom.xml
里加上下面的依赖:<dependency>
<groupId>com.example</groupId>
<artifactId>sensitive-word-tool</artifactId>
<version>1.0.0</version>
</dependency>
二、核心方法使用实例
1. 查找和替换功能
检查敏感词是否存在:
SensitiveTool.contains("这是一个敏感词示例"); // 返回 true 或 false
替换敏感词:
String result = SensitiveTool.replace("这里有敏感词", '*');
System.out.println(result); // 输出:这里有**
*
替换还挺常见,某宝某站某厂基本都这么干。自定义替换策略:
String result = SensitiveTool.replace("敏感词示例", word -> "[屏蔽]");
System.out.println(result); // 输出:[屏蔽]示例
[屏蔽]
。如果 PM 突发奇想想要换个替换符号(比如🌟),就完全没问题。查找所有敏感词:
List<String> words = SensitiveTool.findAll("这是一个敏感词测试");
System.out.println(words); // 输出:[敏感词]
2. 忽略检测规则
大小写忽略:
SensitiveTool.setIgnoreCase(true); // 不区分大小写
SensitiveTool.contains("SensitiveWord"); // true
特殊字符忽略:
SensitiveTool.setIgnoreSpecialChars(true); // 忽略标点等特殊字符
SensitiveTool.contains("敏感.词!"); // true
简繁体混合检测:
SensitiveTool.setIgnoreSimplifiedTraditional(true);
SensitiveTool.contains("敏感詞"); // true
三、自定义检测策略
ISensitiveWordReplace
接口。1. 替换特定词汇:
String result = SensitiveTool.replace("敏感词示例", word -> {
if ("敏感词".equals(word)) {
return "[警告]";
}
return "[屏蔽]";
});
System.out.println(result); // 输出:[警告]示例
[警告]
,其他的词用 [屏蔽]
。这不就是一个简易的分级策略嘛!2. 检测规则扩展:
SensitiveTool.addRule(new EmailDetectRule());
SensitiveTool.addRule(new UrlDetectRule());
SensitiveTool.addRule(new IPDetectRule());
检测邮箱: example@example.com
检测网址: https://example.com
检测 IPv4 地址: 192.168.0.1
四、代码实例和输出结果
代码示例:
public class SensitiveToolDemo {
public static void main(String[] args) {
// 设置忽略规则
SensitiveTool.setIgnoreCase(true);
SensitiveTool.setIgnoreSpecialChars(true);
// 测试字符串
String text = "敏感词,SensitiveWord! 演示123";
// 检测敏感词
boolean hasSensitiveWord = SensitiveTool.contains(text);
System.out.println("是否包含敏感词: " + hasSensitiveWord);
// 替换敏感词
String replaced = SensitiveTool.replace(text, '*');
System.out.println("替换结果: " + replaced);
// 查找所有敏感词
List<String> sensitiveWords = SensitiveTool.findAll(text);
System.out.println("敏感词列表: " + sensitiveWords);
}
}
输出结果:
是否包含敏感词: true
替换结果: **,SensitiveWord! 演示123
敏感词列表: [敏感词]
五、应用场景
聊天内容审核:确保用户发言符合社区规范。 文本过滤:比如博客评论、用户昵称的审核。 特殊内容检测:检测敏感信息,比如手机号、邮箱等。
往期历史