posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          java 過濾敏感詞

          Posted on 2009-07-26 22:42 Gavin.lee 閱讀(1415) 評論(0)  編輯  收藏 所屬分類: java SE & EE
          就目前來說,我項目里用的是直接封裝需要過濾的詞,到一個數(shù)組,然后將輸入串進行匹配,當相等時,就過濾掉。這種做法太呆板了,根本沒什么含量,今天在網(wǎng)上無意中看到這個工具類,感覺不錯,有點思想,改天有時間研究下,將我現(xiàn)項目里過濾給替換掉。呵,先放著了。
          words.properties
          Properties
          屬性

          package com.Gavin.wap;

          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;

              
          public static void initPattern() {
                  StringBuffer patternBuf 
          = new StringBuffer();
                  
          try {
                      InputStream in 
          = KeywordFilter.class.getClassLoader().getResourceAsStream("words.properties");
                      Properties properties 
          = new Properties();
                      properties.load(in);
                      
                      Enumeration<?> enu 
          = properties.propertyNames();
                      
          while (enu.hasMoreElements()) {
                          patternBuf.append((String) enu.nextElement() 
          + "|");    //讀取所有properties里的詞,以 | 分隔
                      }

                      
                      patternBuf.deleteCharAt(patternBuf.length() 
          - 1);
                      
                      
          //默認下,properties文件讀取編碼: ISO8859-1
                      pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"));
                      
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

              }


              
          public static String doFilter(String str) {
                  System.out.println(
          "str:" + str);
                  
          try {
                      Matcher m 
          = pattern.matcher(str);
                      str 
          = m.replaceAll("*");
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

                  
          return str;
              }


              
          public static void main(String[] args) {
                  String str 
          = "Properties 類表示了一個持久的屬性集。Properties 可保存在流中或從流中加載。屬性列表中每個鍵及其對應值都是一個字符串。";
                  initPattern();
                  
                  
          try {
                      System.out.println(KeywordFilter.doFilter(str));
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

              }


          }

          主站蜘蛛池模板: 石屏县| 龙海市| 景东| 霍邱县| 肥乡县| 故城县| 湟源县| 砀山县| 田东县| 湖州市| 凯里市| 汽车| 通辽市| 鄂尔多斯市| 遂昌县| 安义县| 常山县| 凤阳县| 永和县| 芮城县| 焉耆| 古浪县| 昭苏县| 四会市| 辽源市| 玉龙| 惠东县| 灵石县| 武冈市| 新昌县| 长宁县| 九台市| 镇雄县| 金坛市| 从化市| 玛曲县| 托里县| 秦皇岛市| 罗源县| 宁阳县| 鸡东县|