锁定老帖子 主题:Java中过滤敏感词
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-27
在发表评论,文章时常常需要过滤一些敏感词... 把自己的拿出来晒晒 1.写个过滤的类: import java.io.IOException; import java.io.InputStream; 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; public static void initPattern(){ StringBuffer patternBuf = new StringBuffer(""); try{ InputStream in = KeyWordFilter.class.getClassLoader().getResourceAsStream("word.properties"); Properties pro = new Properties(); pro.load(in); Enumeration enu = pro.propertyNames(); while(enu.hasMoreElements()){ patternBuf.append((String)enu.nextElement()+"|"); } patternBuf.deleteCharAt(patternBuf.length()-1); pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"),Pattern.CASE_INSENSITIVE); //编译一个正则表达式,同时生成Pattern }catch(IOException ioEx){ ioEx.printStackTrace(); } } public static String doFilter(String str){ try { Matcher m = pattern.matcher(str); //匹配到得用去掉 str = m.replaceAll("*"); }catch (Exception e){ e.printStackTrace(); } return str; } } 2.在控制层进行操作,即action类中,在需要的方法中进行调用 KeyWordFilter.initPattern(); String newContent=KeyWordFilter.doFilter(content); 其中content就是显示层传递的参数(需要过滤的) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-01-27
gtssgtss 写道 吥螚過藘炏猩炆の過藘喺綂莈囿噫锶 什么???? |
|
返回顶楼 | |
发表时间:2011-01-27
joan0106 写道 gtssgtss 写道 吥螚過藘炏猩炆の過藘喺綂莈囿噫锶
什么???? 哈哈 |
|
返回顶楼 | |
发表时间:2011-01-27
用正则是不是太慢了?我们的做法是先用敏感词汇做成敏感词库
|
|
返回顶楼 | |
发表时间:2011-01-27
正因为敏感词过滤,催生了火星文
|
|
返回顶楼 | |
发表时间:2011-01-27
joan0106 写道 gtssgtss 写道 吥螚過藘炏猩炆の過藘喺綂莈囿噫锶
什么???? 我给你翻译一下: 不能过滤火星文的过滤系统没有意思 |
|
返回顶楼 | |
发表时间:2011-01-27
另外,不包含分词的过滤个人觉得纯属扯淡
|
|
返回顶楼 | |
发表时间:2011-01-27
能不能寫個過濾樓主頭像的。。
|
|
返回顶楼 | |
发表时间:2011-01-27
这样过滤肯定是不行的。给你个两万字的文章让你去过滤。需要过滤的敏感字符那么多。一定要分词的。。
|
|
返回顶楼 | |
发表时间:2011-01-27
public static void initPattern(){...}
KeyWordFilter.initPattern(); String newContent=KeyWordFilter.doFilter(content); 邊碼吥螚這樣寫 |
|
返回顶楼 | |