無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          我參與的團隊

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 357797
          • 排名 - 155

          java 過濾敏感詞

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

              }


          }

          主站蜘蛛池模板: 方城县| 遂平县| 宣汉县| 尖扎县| 宜良县| 南阳市| 化隆| 浙江省| 渝北区| 崇仁县| 盐边县| 郧西县| 灵宝市| 莆田市| 泌阳县| 泗洪县| 南陵县| 循化| 招远市| 凉城县| 双辽市| 庆云县| 洞口县| 禹州市| 朝阳区| 积石山| 仪陇县| 香港| 淳安县| 水城县| 嘉善县| 龙川县| 宜春市| 离岛区| 信丰县| 龙山县| 富顺县| 谢通门县| 红桥区| 诸暨市| 胶州市|