java过滤关键字
程序员文章站
2022-04-08 23:21:50
...
KeywordFilter.java:
keyword.properties文件放在同一目录下,其内容就是要屏蔽的词语的集合,每个词语用“|”分割
如下
1. import java.io.InputStream; 2. import java.util.Enumeration; 3. import java.util.Properties; 4. import java.util.regex.Matcher; 5. import java.util.regex.Pattern; 6. 7. public class KeywordFilter 8. { 9. private static Pattern pattern = null; 10. 11. private static KeywordFilter filter = new KeywordFilter(); 12. 13. public static KeywordFilter getInstance() 14. { 15. return (null == filter)?new KeywordFilter():filter; 16. } 17. 18. private KeywordFilter() 19. { 20. init(); 21. } 22. 23. private void init() 24. { 25. StringBuilder stringBuilder = new StringBuilder(); 26. 27. try 28. { 29. InputStream in = KeywordFilter.class 30. .getResourceAsStream("keyword.properties"); 31. 32. Properties pro = new Properties(); 33. 34. //Thread.sleep(5000); 35. 36. pro.load(in); 37. 38. Enumeration<?> enu = pro.propertyNames(); 39. 40. while (enu.hasMoreElements()) 41. { 42. stringBuilder.append(enu.nextElement() + "|"); 43. } 44. 45. stringBuilder.deleteCharAt(stringBuilder.length() - 1); 46. 47. pattern = Pattern.compile(new String(stringBuilder.toString() 48. .getBytes("ISO-8859-1"), "UTF-8")); 49. 50. } catch (Exception ex) 51. { 52. ex.printStackTrace(); 53. } 54. } 55. 56. public String doFilter(String str) 57. { 58. Matcher m = pattern.matcher(str); 59. 60. str = m.replaceAll("***"); 61. 62. return str; 63. } 64. 65. }
keyword.properties文件放在同一目录下,其内容就是要屏蔽的词语的集合,每个词语用“|”分割
如下
暴力|血腥