java 敏感词过滤 效率凑合

[size=medium][color=blue]使用原理:
先把资源文件中的敏感词加读出来拼接成正则表达式,然后放到Pattern中,用Matcher m = pattern.matcher(str); str = m.replaceAll("XXX");替换敏感词 返回替换后的内容[/color][/size]
[size=medium][color=red]缺点:不能准确的输出敏感词的位置,和具体是哪个敏感词[/color][/size]
[img]http://dl.iteye.com/upload/picture/pic/125164/225ebbce-b4a9-3c7e-b1ff-ff03cae41a44.jpg[/img]

KeyWordFilter.java

package com.gjw.action.copy;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class KeyWordFilter
{
private static Pattern pattern = null;
// 从words.properties初始化正则表达式字符串
private static void initPattern()
{
StringBuffer patternBuf = new StringBuffer("");
try
{
InputStream in = KeyWordFilter.class.getClassLoader().getResourceAsStream("words.properties");
Properties pro = new Properties();
pro.load(in);
in.close();
Enumeration<String> enu = (Enumeration<String>) pro.propertyNames();
patternBuf.append("(");
while(enu.hasMoreElements())
{
try {
String dd = (String) enu.nextElement();
dd = new String(dd.getBytes("ISO8859-1"),"UTF-8");
patternBuf.append(dd+"|");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
patternBuf.deleteCharAt(patternBuf.length()-1);
patternBuf.append(")");
pattern = Pattern.compile(patternBuf.toString());
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}
}
private static String doFilter(String str)
{
Matcher m = pattern.matcher(str);
str = m.replaceAll("XXX"); //敏感词替换
return str;
}

public static void main(String[] args)
{
String str = "需要过滤的内容";
initPattern();
Date d1 = new Date();
System.out.println("共"+str.length()+"个字符,查到" + KeyWordFilter.doFilter(str));
Date d2 = new Date();
float cost = d2.getTime()-d1.getTime();
System.out.println("总共花费:"+cost+"毫秒");
}

}


words.properties内容下游
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值