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

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

          日歷

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          我參與的團隊

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 358304
          • 排名 - 155

          java 過濾敏感詞

          Posted on 2009-07-26 22:42 Gavin.lee 閱讀(1419) 評論(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();
                  }

              }


          }

          主站蜘蛛池模板: 谢通门县| 卢湾区| 青岛市| 镇沅| 龙井市| 沙湾县| 广水市| 木兰县| 长沙县| 鲁甸县| 岫岩| 邳州市| 资中县| 剑川县| 达日县| 大厂| 城步| 克拉玛依市| 鹤山市| 德江县| 临桂县| 济阳县| 涟水县| 巴马| 新龙县| 武义县| 家居| 旬邑县| 梁山县| 道真| 英德市| 朝阳县| 邻水| 游戏| 扶沟县| 祥云县| 娱乐| 澳门| 淮滨县| 榆中县| 行唐县|