java去除文章中的敏感詞
做博客或bbs時;文章中經常會有些敏感詞要去掉; 以下是一個java實現這個功能的小例題: 兩個個文件words.properties和KeyWordFilter.java;1、words.properties文件是個文本文件;內容如下:
敏感詞一
敏感詞二
敏感詞三
2、KeyWordFilter.java是個java文件內容如下:
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
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);
Enumeration enu = pro.propertyNames();
patternBuf.append("(");
while(enu.hasMoreElements())
{
patternBuf.append((String)enu.nextElement()+"");
}
patternBuf.deleteCharAt(patternBuf.length()-1);
patternBuf.append(")");
//unix換成UTF-8
//pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"));
//win下換成gb2312
pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "gb2312"));
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}
}
private static String doFilter(String str)
{
Matcher m = pattern.matcher(str);
str = m.replaceAll("");
return str;
}
public static void main(String[] args)
{
String str = "國敏感詞一院學位辦就敏感詞三的報道表示敏感詞二";
System.out.println("str:"+str);
initPattern();
Date d1 = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss:SSS Z");
System.out.println("start:"+formatter.format(d1));
System.out.println("共"+str.length()+"個字符,查到" + KeyWordFilter.doFilter(str));
Date d2 = new Date();
System.out.println("end:"+formatter.format(d2));
}
}</pre>
輸出為:
__________________________________
str:國敏感詞一院學位辦就敏感詞三的報道表示敏感詞二
start:星期二, 24 三月 2009 14:50:17:171 +0800
共23個字符,查到國院學位辦就的報道表示
end:星期二, 24 三月 2009 14:50:17:531 +0800
來自:http://my.oschina.net/songhongxu/blog/184721</span>