資源簡介
用java實現根據用戶傳進來的話語是否包含敏感詞,如果包含敏感詞用*來替代輸出。

代碼片段和文件信息
package?com.chenssy.keyword;
import?java.util.HashSet;
import?java.util.Iterator;
import?java.util.Map;
import?java.util.Set;
/**
?*?@Description:?敏感詞過濾
?*?@Project:test
?*/
public?class?SensitivewordFilter?{
@SuppressWarnings(“rawtypes“)
private?Map?sensitiveWordMap?=?null;
public?static?int?minMatchTYpe?=?1;??????//最小匹配規則
public?static?int?maxMatchType?=?2;??????//最大匹配規則
/**
?*?構造函數,初始化敏感詞庫
?*/
public?SensitivewordFilter(){
sensitiveWordMap?=?new?SensitiveWordInit().initKeyWord();
}
/**
?*?判斷文字是否包含敏感字符
?*?@param?txt??文字
?*?@param?matchType??匹配規則 1:最小匹配規則,2:最大匹配規則
?*?@return?若包含返回true,否則返回false
?*?@version?1.0
?*/
public?boolean?isContaintSensitiveWord(String?txtint?matchType){
boolean?flag?=?false;
for(int?i?=?0?;?i? int?matchFlag?=?this.CheckSensitiveWord(txt?i?matchType);?//判斷是否包含敏感字符
if(matchFlag?>?0){????//大于0存在,返回true
flag?=?true;
}
}
return?flag;
}
/**
?*?獲取文字中的敏感詞
?*?@param?txt?文字
?*?@param?matchType?匹配規則 1:最小匹配規則,2:最大匹配規則
?*?@return
?*?@version?1.0
?*/
public?Set?getSensitiveWord(String?txt??int?matchType){
Set?sensitiveWordList?=?new?HashSet();
for(int?i?=?0?;?i? int?length?=?CheckSensitiveWord(txt?i?matchType);????//判斷是否包含敏感字符
if(length?>?0){????//存在加入list中
sensitiveWordList.add(txt.substring(i?i+length));
i?=?i?+?length?-?1;????//減1的原因,是因為for會自增
}
}
return?sensitiveWordList;
}
/**
?*?替換敏感字字符
?*?@param?txt
?*?@param?matchType
?*?@param?replaceChar?替換字符,默認*
?*?@version?1.0
?*/
public?String?replaceSensitiveWord(String?txtint?matchTypeString?replaceChar){
String?resultTxt?=?txt;
Set?set?=?getSensitiveWord(txt?matchType);?????//獲取所有的敏感詞
Iterator?iterator?=?set.iterator();
String?word?=?null;
String?replaceString?=?null;
while?(iterator.hasNext())?{
word?=?iterator.next();
replaceString?=?getReplaceChars(replaceChar?word.length());
resultTxt?=?resultTxt.replaceAll(word?replaceString);
}
return?resultTxt;
}
/**
?*?獲取替換字符串
?*?@param?replaceChar
?*?@param?length
?*?@return
?*?@version?1.0
?*/
private?String?getReplaceChars(String?replaceCharint?length){
String?resultReplace?=?replaceChar;
for(int?i?=?1?;?i? resultReplace?+=?replaceChar;
}
return?resultReplace;
}
/**
?*?檢查文字中是否包含敏感字符,檢查規則如下:
?*?@param?txt
?*?@param?beginIndex
?*?@param?matchType
?*?@return,如果存在,則返回敏感詞字符的長度,不存在返回0
?*?@version?1.0
?*/
@SuppressWarnings({?“rawtypes“})
public?int?CheckSensitiveWord(String?txtint?beginIndexint?matchType){
boolean??flag?=?false;????//敏感詞結束標識位:用于敏感詞只有1位的情況
int?matchFlag?=?0;?????//匹配標識數默認為0
char?word?=?0;
Map?nowMap?=?sensitiveWordMap;
for(int?i?=?beginIndex;?i? word?=?txt.charAt(i);
nowMap?=?(Map)?nowMap.ge
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-08-29?21:15??敏感詞過濾\
?????目錄???????????0??2018-08-29?21:15??敏感詞過濾\.git\
?????文件??????????23??2018-08-29?21:15??敏感詞過濾\.git\HEAD
?????文件?????????130??2018-08-29?21:15??敏感詞過濾\.git\config
?????文件??????????73??2018-08-29?21:15??敏感詞過濾\.git\desc
?????目錄???????????0??2018-08-29?21:15??敏感詞過濾\.git\hooks\
?????文件?????????478??2018-08-29?21:15??敏感詞過濾\.git\hooks\applypatch-msg.sample
?????文件?????????896??2018-08-29?21:15??敏感詞過濾\.git\hooks\commit-msg.sample
?????文件?????????189??2018-08-29?21:15??敏感詞過濾\.git\hooks\post-update.sample
?????文件?????????424??2018-08-29?21:15??敏感詞過濾\.git\hooks\pre-applypatch.sample
?????文件????????1642??2018-08-29?21:15??敏感詞過濾\.git\hooks\pre-commit.sample
?????文件????????1348??2018-08-29?21:15??敏感詞過濾\.git\hooks\pre-push.sample
?????文件????????4951??2018-08-29?21:15??敏感詞過濾\.git\hooks\pre-reba
?????文件????????1239??2018-08-29?21:15??敏感詞過濾\.git\hooks\prepare-commit-msg.sample
?????文件????????3611??2018-08-29?21:15??敏感詞過濾\.git\hooks\update.sample
?????目錄???????????0??2018-08-29?21:15??敏感詞過濾\.git\info\
?????文件?????????240??2018-08-29?21:15??敏感詞過濾\.git\info\exclude
?????目錄???????????0??2018-08-29?21:15??敏感詞過濾\.git\ob
?????目錄???????????0??2018-08-29?21:19??敏感詞過濾\.git\ob
?????目錄???????????0??2018-08-29?21:19??敏感詞過濾\.git\ob
?????目錄???????????0??2018-08-29?21:15??敏感詞過濾\.git\refs\
?????目錄???????????0??2018-08-29?21:19??敏感詞過濾\.git\refs\heads\
?????目錄???????????0??2018-08-29?21:19??敏感詞過濾\.git\refs\tags\
?????文件????????3745??2018-08-29?21:05??敏感詞過濾\SensitiveWordInit.java
?????文件????????4794??2018-08-29?21:04??敏感詞過濾\SensitivewordFilter.java
評論
共有 條評論