zoukankan      html  css  js  c++  java
  • 快速过滤字符串内容

    public class StringFilterHelper {
        private int maxLength;
        private HashMap<String, String> filterStrs = new HashMap<String, String>();
    
        /**
         * * 初始化需要过滤掉*的数量
         */
        private String initStr(int n) {
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < n; i++) {
                sb.append('*');
            }
            return sb.toString();
        }
    
        /**
         * * str-被过滤得字符串 * s-需要过滤得字符串 * 获得剩下未过滤的字符串
         */
        private String getNextStr(String str, int start, int slength) {
            if (start == 0) {
                str = str.substring(slength);
            } else if (start + slength < str.length()) {
                str = str.substring(start + slength);
            }
            return str;
        }
    
        /**
         * * str-被过滤得字符串 * s-需要过滤得字符串 * 获得过滤后的字符串
         */
        private StringBuffer getFilterStr(StringBuffer sb, String str, int start,
                String s) {
            if (start != 0) {
                sb.append(str.substring(0, start));
            }
            sb.append(filterStrs.get(s));
            return sb;
        }
    
        /**
         * * str-被过滤的字符串 * 过滤,并组合过滤后的字符串
         */
        public String filter(String str) {
            StringBuffer resultStr = new StringBuffer();
            for (int start = 0; start < str.length(); start++) {
                for (int end = start + 1; end <= str.length()
                        && end <= start + maxLength; end++) {
                    String s = str.substring(start, end);
                    int slength = s.length();
                    if (filterStrs.containsKey(s)) {
                        resultStr = getFilterStr(resultStr, str, start, s);
                        str = getNextStr(str, start, slength);
                        start = 0;
                        end = start;
                    }
                }
            }
            resultStr.append(str);
            return resultStr.toString();
        }
    
        public void put(String key) {
            int keyLength = key.length();
            filterStrs.put(key, initStr(keyLength));
            if (keyLength > this.maxLength)
                maxLength = keyLength;
        }
        
        /**
         *  过滤字符串
         *  @Description    : 主要是过贴子内容
         *  @Method_Name    : filterString
         *  @param filterRole
         *  @param filterStr
         *  @return 
         *  @return         : String
         *  @Creation Date  : Apr 19, 2013 4:10:20 PM 
         *  @version        : v1.00
         *  @Author         : bluesky
         *  @Update Date    : 
         *  @Update Author  : bluesky 
         */
        public static String filterString(String filterRole,String filterStr){
            StringFilterHelper t = new StringFilterHelper();
            String[] s=filterRole.split(",");
            for(int i=0;i<s.length;i++){
                t.put(s[i]);
            }
            return t.filter(filterStr);
        }
    
        public static void main(String[] agrs) {
            String filterRole="TMD,TNND,操,";
            System.out.println(StringFilterHelper.filterString(filterRole, "TMD,操,TNND.操..TMDTMDTMDTMD.tTNND.操TMDTNNDTNNDTNND操"));
        }
    
    }
  • 相关阅读:
    java进程自动杀死
    线程池的取值(一)与拒绝策略
    zju 1383 Binary Numbers
    可以连续几行数,,,分别相加求和
    几个数字的和
    zju 2812 Quicksum---------hdu 2734
    rwkj 1332 C语言实验四(函数):题目1、数字根
    zju 1295 Reverse Text
    zju 1241 Geometry Made Simple
    hdu 1379 DNA Sorting
  • 原文地址:https://www.cnblogs.com/skyblue/p/3030986.html
Copyright © 2011-2022 走看看