详细分析Java中的敏感词过滤(附Demo)

目录

  • 前言
  • 1. 简易Demo
  • 2. 进阶Demo

前言

敏感词直接过滤,有效防止敏感信息的上传

本文主要给一个启发的思路

1. 简易Demo

通过简易的Demo机制了解基本原理

import java.util.HashSet;
import java.util.Set;public class test {private Set<String> sensitiveWords;public test(Set<String> sensitiveWords) {this.sensitiveWords = sensitiveWords;}public String filter(String text) {for (String word : sensitiveWords) {text = text.replaceAll(word, "***"); // 替换敏感词为 ***}return text;}public static void main(String[] args) {// 构建敏感词库Set<String> sensitiveWords = new HashSet<>();sensitiveWords.add("敏感词1");sensitiveWords.add("敏感词2");sensitiveWords.add("敏感词3");// 创建敏感词过滤器test filter = new test(sensitiveWords);// 测试文本String text = "这是一个包含敏感词1和敏感词2的文本。";// 进行过滤String filteredText = filter.filter(text);// 输出过滤后的文本System.out.println("过滤后的文本:");System.out.println(filteredText);}
}

截图如下:

在这里插入图片描述

2. 进阶Demo

主要丰富敏感词的一些方法功能

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;public class test {private Set<String> sensitiveWords;public test(Set<String> sensitiveWords) {this.sensitiveWords = sensitiveWords;}public String filter(String text) {for (String word : sensitiveWords) {text = text.replaceAll(word, "***"); // 替换敏感词为 ***}return text;}public boolean contains(String text, String word) {return text.contains(word);}public boolean findAll(String text) {for (String word : sensitiveWords) {if (text.contains(word)) {return true;}}return false;}public String findFirst(String text) {for (String word : sensitiveWords) {if (text.contains(word)) {return word;}}return null;}public String replace(String text, String replacement) {for (String word : sensitiveWords) {text = text.replace(word, replacement);}return text;}public String replaceChar(String text, char replacement) {for (String word : sensitiveWords) {text = text.replace(word, String.valueOf(replacement));}return text;}public boolean ignoreCase(String text, String word) {for (String sensitiveWord : sensitiveWords) {if (sensitiveWord.equalsIgnoreCase(word)) {return true;}}return false;}public boolean ignoreWidth(String text, String word) {for (String sensitiveWord : sensitiveWords) {if (text.contains(sensitiveWord) || text.contains(word)) {return true;}}return false;}public void config(Set<String> newSensitiveWords) {this.sensitiveWords = newSensitiveWords;}public static void main(String[] args) {// 构建敏感词库Set<String> sensitiveWords = new HashSet<>();sensitiveWords.add("敏感词1");sensitiveWords.add("敏感词2");sensitiveWords.add("敏感词3");// 创建敏感词过滤器test filter = new test(sensitiveWords);// 测试文本String text = "这是一个包含敏感词1和敏感词2的文本。";// 测试 contains 方法testContains(filter, text);// 测试 findAll 方法testFindAll(filter, text);// 测试 findFirst 方法testFindFirst(filter, text);// 测试 replace 方法testReplace(filter, text);// 测试 replaceChar 方法testReplaceChar(filter, text, '*'); // 传入替换字符// 测试 ignoreCase 方法testIgnoreCase(filter, text);// 测试 ignoreWidth 方法testIgnoreWidth(filter, text);// 测试 config 方法testConfig(filter, new HashSet<>(Arrays.asList("新敏感词1", "新敏感词2")));// 输出过滤后的文本System.out.println("过滤后的文本:");System.out.println(filter.filter(text));}private static void testContains(test filter, String text) {System.out.println("测试 contains 方法:");System.out.println("文本是否包含敏感词1? " + filter.contains(text, "敏感词1"));System.out.println("文本是否包含敏感词4? " + filter.contains(text, "敏感词4"));}// 添加其他测试方法...private static void testFindAll(test filter, String text) {System.out.println("测试 findAll 方法:");System.out.println("文本是否包含任何敏感词? " + filter.findAll(text));}private static void testFindFirst(test filter, String text) {System.out.println("测试 findFirst 方法:");System.out.println("文本中第一个敏感词是: " + filter.findFirst(text));}private static void testReplace(test filter, String text) {System.out.println("测试 replace 方法:");System.out.println("过滤后的文本: " + filter.replace(text, "***"));}private static void testReplaceChar(test filter, String text, char replacement) {System.out.println("测试 replaceChar 方法:");System.out.println("过滤后的文本: " + filter.replaceChar(text, replacement));}private static void testIgnoreCase(test filter, String text) {System.out.println("测试 ignoreCase 方法:");System.out.println("文本是否包含忽略大小写的敏感词? " + filter.ignoreCase(text, "敏感词1"));}private static void testIgnoreWidth(test filter, String text) {System.out.println("测试 ignoreWidth 方法:");System.out.println("文本是否包含忽略宽度的敏感词? " + filter.ignoreWidth(text, "敏感词1"));}private static void testConfig(test filter, Set<String> newSensitiveWords) {System.out.println("测试 config 方法:");filter.config(newSensitiveWords);System.out.println("已更新敏感词库。");}
}

截图如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的最小系统电路设计(STM32F103C8T6为例)

前言&#xff1a;本篇博客为嵌入式硬件领域的文章&#xff0c;对 STM32 的最小系统电路设计进行教学。本篇博客以嘉立创 EDA&#xff08;标准版&#xff09;进行绘制 STM32F103C8T6 的最小系统电路 PCB 板&#xff0c;STM32 的最小系统通常包括&#xff1a;微控制器、时钟电路、…

python从0开始学习

目录 前言 1、print函数 2、input函数 3、保留字和标识符 总结 前言 本篇文章我们开辟一个新的学习模块&#xff1a;python。python是一个十分简洁实用的编程语言&#xff0c;我们将从0开始学习python 1、print函数 print(*args, sep , end\n, fileNone, flushFalse) pytho…

ESP-01/01S 烧录固件

目录 一、ESP-01 与 ESP-01S 的区别二、ESP-01 与 ESP-01S 烧录 AT 固件1、模块接线a、管脚功能定义b、模组启动模式c、模块接线 2、下载 AT 固件3、下载固件烧录工具4、固件烧录步骤5、模块快速烧录 AT 固件 三、ESP-01 与 ESP-01S 发送 AT 指令1、模块接线2、上电信息3、发送…

硅片和SOI哪个研究方向更好?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测社区&#xff0c;星球号&#xff1a;63559049&#xff09;里的学员问&#xff1a;我研一将要结束&#xff0c;即将进入课题组。我们课题组方向有硅片和soi两种方向&#xff0c;这两种方向该如何选择呢&#xff1f; 硅片与…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 &#xff1f;二、编写Shell脚本1. 基本规则2. shell 变量&#xff08;1&#xff09;创建变量&#xff08;2&#xff09;引用变量&#xff08;3&#xff09;删除变量&#xff08;4&#xff09;从键盘读取变量&#xff08;5&#xff09;特殊变…

Vulnhub-DIGITALWORLD.LOCAL: VENGEANCE渗透

文章目录 前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、smb下载线索三、制作字典四、爆破压缩包密码五、线索分析六、提权&#xff01;&#xff01;&#xff01; Vulnhub靶机&#xff1a;DIGITALWORLD.LOCAL: VENGEANCE ( digitalworld.local: VENGEANCE …

【linux】初步认识文件系统

初步认识文件系统 前置知识的简单了解简单回顾C语言的文件操作stdin&stdout&stderr 系统文件IOopen函数的返回值文件描述符fd打开文件背后的操作文件描述符的分配规则 前置知识的简单了解 文件包括了文件内容和文件属性两个部分(文件内容顾名思义就是文件里面的数据等…

tomcat启动闪退问题解决方法

文章目录 Tomcat启动闪退的常见问题及解决方法Tomcat是什么启动闪退的常见问题及解决方法1. 内存不足问题描述&#xff1a;案例分析&#xff1a;解决方法&#xff1a; 2. 端口冲突问题描述&#xff1a;解决方法&#xff1a; 3. 日志错误问题描述&#xff1a;解决方法&#xff1…

冰蓄冷系统基础知识

冰蓄冷是将水制成冰储存冷量&#xff0c;它是潜热蓄冷的一种方式。当压力保持不变时&#xff0c;物质在相变过程中保持恒定温度并吸收或释放热量&#xff0c;通常把这个温度称为相变温度(即溶解温度或凝固温度)&#xff0c;把吸收或释放的热量称相变潜热。在常压下&#xff0c;…

基于Python的LSTM网络实现单特征预测回归任务(TensorFlow)

目录 一、数据集 二、任务目标 三、代码实现 1、从本地路径中读取数据文件 2、数据归一化 3、创建配置类&#xff0c;将LSTM的各个超参数声明为变量&#xff0c;便于后续使用 4、创建时间序列数据 5、划分数据集 6、定义LSTM网络 &#xff08;1&#xff09;创建顺序模…

一、初识VUE

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 Vue Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c…

MySQL常见问题解决和自动化安装脚本

常见问题 MySQL密码正确但无法登录的情况 这种情况一般都是因为缓存&#xff0c;使用mysql -u root -p123456直到成功登陆为止&#xff0c;并且进入之后重新修改密码&#xff0c;多次重复修改密码的命令并且再一次清除缓存后退出。 ALTER USER rootlocalhost IDENTIFIED WIT…

基于Unity+Vue通信交互的WebGL项目实践

unity-webgl 是无法直接向vue项目进行通信的&#xff0c;需要一个中间者 jslib 文件 jslib当作中间者&#xff0c;unity与它通信&#xff0c;前端也与它通信&#xff0c;在此基础上三者之间进行了通信对接 看过很多例子&#xff1a;介绍的都不是很详细&#xff0c;不如自己写&…

【MATLAB源码-第199期】基于MATLAB的深度学习(CNN)数字、模拟调制识别仿真,输出识别率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于深度学习的调制识别系统利用复杂的数学模型和算法来识别和分类从不同来源接收到的无线信号的调制类型。这种技术的应用广泛&#xff0c;特别是在无线通信、电子战、频谱监测和认知无线电等领域中具有重要价值。调制识别系…

算法导论 总结索引 | 第三部分 第十二章:二叉搜索树

1、搜索树数据结构 支持 许多动态集合操作&#xff0c;包括 SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT 和 DELETE 等。使用搜索树 既可以作为一个字典 又可以作为一个优先队列 2、二叉搜索树上的基本操作 所花费的时间 与这棵树的高度成正比。对于有n个结点的…

汽车热辐射、热传导、热对流模拟加速老化太阳光模拟器系统

汽车整车结构复杂&#xff0c;材料种类繁多&#xff0c;在使用过程中会面临各种严酷气候环境的考验&#xff0c;不可避免会出现零部件材料老化、腐蚀等不良现象&#xff0c;从而影响汽车的外观、功能&#xff0c;甚至产生安全隐患。因此&#xff0c;分析汽车零部件材料老化腐蚀…

深入剖析Tomcat(五) 剖析Servlet容器并实现一个简易Context与Wrapper容器

上一章介绍了Tomcat的默认连接器&#xff0c;后续程序都会使用默认连接器。前面有讲过Catalina容器的两大块内容就是连接器与Servlet容器。不同于第二章的自定义丐版Servlet容器&#xff0c;这一章就来探讨下Catalina中的真正的Servlet容器究竟长啥样。 四种容器 在Catalina中…

音视频入门基础:像素格式专题(1)——RGB简介

一、像素格式简介 像素格式&#xff08;pixel format&#xff09;指像素色彩按分量的大小和排列。这种格式以每个像素所使用的总位数以及用于存储像素色彩的红、绿、蓝和 alpha 分量的位数指定。在音视频领域&#xff0c;常用的像素格式包括RGB格式和YUV格式&#xff0c;本文…

【海博】雅思该怎么练?

文章目录 前言 备考计划 模拟考试 参考资料 前言 见《【海博】浅析海博深造》 见《【海博】雅思和托福该考哪个&#xff1f;》 见《【海博】雅思该怎么考&#xff1f;》 见《【海博】雅思考什么&#xff1f;》 备考计划 第一周确定你的目标考试分数。 做一套雅思模拟试题&…

npm install报错

总结&#xff1a;没有安装visual studio 2017以上带有C桌面开发的版本 #开始试错 #报错总信息mingw_x64_win版本 百度网盘链接: link 提取码&#xff1a;3uou #尝试用mingw配置个C编译器&#xff0c;并配置环境变量&#xff0c;失败 #只认可使用VS!GIthub原址: 链接: link 上…