在发表评论,文章时常常需要过滤一些敏感词...
把自己的拿出来晒晒
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就是显示层传递的参数(需要过滤的)