读取敏感字配置文件,或者数据库,使用正则表达式工具进行过滤
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestFilter {
private static Pattern pattern = null;
public static void initPattern() {
StringBuffer patternBuf = new StringBuffer();
try {
InputStream in = TestFilter.class.getClassLoader()
.getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(in);
Enumeration<?> enu = properties.propertyNames();
while (enu.hasMoreElements()) {
patternBuf.append((String) enu.nextElement() + "|"); // 读取所有properties里的词,以
// | 分隔
System.out.println(new String(patternBuf.toString().getBytes(
"UTF-8"), "UTF-8"));
}
patternBuf.deleteCharAt(patternBuf.length() - 1);
// 默认下,properties文件读取编码: ISO8859-1
pattern = Pattern.compile(new String(patternBuf.toString()
.getBytes("UTF-8"), "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 是否包含敏感字
*
* @param str
* @return true:是 false:否
*/
public static boolean isContainsKeywords(String str) {
String temp = str;
try {
Matcher m = pattern.matcher(str);
str = m.replaceAll("*");
} catch (Exception e) {
e.printStackTrace();
}
return temp.equals(str) ? false : true;
}
/**
* 获取用*代替掉敏感字的字符串
*
* @param str
* @return
*/
private static Map<Boolean, String> doFilter(String str) {
Map<Boolean, String> test = new HashMap<Boolean, String>();
String origi = str;
Matcher m = pattern.matcher(str);
if (!m.find()) {
test.put(false, str);
} else {
m.replaceFirst("2");
int start = m.end() - m.group().length();
int end = m.end();
String startStsr = str.substring(0, start);
String endStr = str.substring(end, str.length());
str = startStsr + endStr;
int i = origi.length() - str.length();
String mm = "";
for (int k = 0; k < i; k++) {
mm += "*";
}
str = startStsr + mm + endStr;
test.put(true, str);
}
return test;
}
public static String filterKeywords(String str) {
Map<Boolean, String> test1 = new HashMap<Boolean, String>();
test1 = doFilter(str);
while (!test1.containsKey(false)) {
str = test1.get(true);
test1 = doFilter(str);
}
return str;
}
public static void main(String[] args) {
initPattern();
String string = "你他妈是个傻逼死贱人";
System.out.println("endString:" + filterKeywords(string));
}
分享到:
相关推荐
该文件为.java文件,可以配合前面上传的敏感字收录文件进行使用的敏感字过滤工具;包括替换以及自定义过滤格式等
这个"springBoot-java敏感词语过滤类"是一个实用的工具类,用于帮助开发者实现在Java环境中对用户输入或者系统文本进行安全审查,防止不适当、非法或者有害的信息传播。这个工具类通常会包含一系列的方法,用于匹配...
JAVA实现敏感字过滤功能,可以通过解析文本中的敏感字,可以通过数据库获取敏感字然后进行过滤。
在`FilterCode`这个压缩包中,可能包含了实现上述功能的Java代码,如敏感词库类、过滤器类、正则表达式工具类等。通过对这些代码的学习和理解,我们可以更好地掌握在Java环境中实现敏感词过滤的技术细节。在实际应用...
本资源"Java敏感词过滤源码"提供了一个实现这一功能的Java解决方案,它包含了三个关键文件:一个敏感词库和两个Java类。以下是关于这些知识点的详细解释: 1. **敏感词**: 敏感词是指那些可能引起法律、道德或...
在本文中,我们将探讨如何使用DFA(有穷自动机)算法在Java中实现敏感词过滤功能。敏感词过滤在许多应用程序中都是必要的,例如社交媒体、论坛或博客平台,以防止用户发布不当或有害的内容。以下是对DFA算法及其在...
这是一个基于Java实现的图片颜色过滤小程序的项目,适合初学者学习和理解图像处理的基本概念以及Java编程技巧。在这个项目中,开发者创建了一个程序,能够读取图片,对图片中的颜色进行处理,并允许用户保存处理后的...
在本项目"javaWeb实现的过滤器敏感字过滤"中,核心目标是通过过滤器来检查用户输入或者发送的数据,防止出现敏感字符,以确保数据的安全性和合规性。下面我们将深入探讨这个主题,包括过滤器的工作原理、敏感字符...
XSS攻击是一种常见的网络安全问题,攻击者通过注入恶意脚本,利用用户浏览器执行,从而窃取用户的敏感信息,如cookies、登录凭证等。XXSProtect通过过滤输入数据,防止恶意代码在网页上被执行。 在提供的描述中,...
本项目是用Java实现的一个敏感词过滤工具,它能对输入的字符串进行检查,并返回其中的敏感词汇。以下是关于这个Java敏感词过滤实现的详细知识讲解。 首先,我们要理解敏感词过滤的基本原理。通常,敏感词过滤系统会...
工具使用 java 实现,帮助我们解决常见的问题。6W+ 词库,且不断优化更新 基于 DFA 算法,性能较好 基于 fluent-api 实现,使用优雅简洁 支持敏感词的判断、返回、脱敏等常见操作 支持全角半角互换 支持英文大...
`SensitiveWordFilter.java`:这个文件很可能是敏感词过滤的主要实现类,它可能包含了对敏感词库的读取、敏感词匹配算法以及过滤策略的定义。通常,敏感词过滤器会使用字典树(如Trie树)或者关键词列表来存储敏感词...
3. **安全过滤**:过滤敏感字符,防止SQL注入、跨站脚本攻击等。 4. **性能优化**:例如,开启GZIP压缩,减少网络传输的数据量。 5. **权限控制**:检查用户权限,决定是否允许访问特定资源。 ### 5. 扩展性与灵活...
在Java开发中,敏感词过滤是一项重要的功能,尤其在处理用户输入、评论或者社交媒体内容时,需要确保不包含任何可能引发争议或不适当的内容。本项目适用于基于SSM(Spring、SpringMVC、MyBatis)和SpringBoot框架的...
本篇将详细探讨Java环境下如何实现一个SQL注入过滤器,并结合`web.xml`配置文件来部署和应用。 首先,我们需要了解SQL注入的基本原理。当用户输入的数据未经验证或转义就直接拼接到SQL查询语句中时,就可能发生SQL...
高效敏感词过滤JAVA实现(DFA算法) 5000字2ms 节点 + 2进制标识(节省空间/提高查询效率) 附源码、注释,附带专业敏感词库(3396个敏感词) 看得上就拿去用,替换下一两处util方法、改个路径即可 不求什么,...
在Java编程语言中,敏感词过滤是一项重要的任务,特别是在处理用户输入、社交媒体分析、文本审查等场景中。这个话题涉及到如何有效地检测并替换或者屏蔽文本中的特定词汇,以符合法律法规或者平台规定。以下是对...
在Java编程环境中,敏感词过滤是一项重要的任务,特别是在处理用户输入、社交媒体监控或者内容审查时。这个主题主要涉及如何在文本中检测并移除或替换指定的敏感词汇,以确保内容的安全性和合规性。以下是对这个知识...
### Java几个过滤器学习技巧 #### 一、概述 在Java Web开发中,过滤器(Filter)是一种非常实用的功能组件,它可以对用户的请求或响应进行预处理或后处理。通过实现`javax.servlet.Filter`接口,开发者可以自定义...