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操"));
}
}