参考
https://github.com/hailin0/sensitive-word-filter
https://github.com/elulis/sensitive-words
基于第一个链接做的扩展功能,支持多词组替换,默认替换为*,支持自定义值组替换
/**
* 过滤主题和内容
* @param text 需要过滤的内容
* @param filterContent 需要替换的词汇,多词汇用“,”隔开
* @param customContent 替换后的值,多值用“,”隔开
*/
public String filterWords (String text,String filterContent,String customContent){
if(StringUtils.isNotEmpty(filterContent)){
Set<KeyWord> kws1 = new HashSet<KeyWord>();
String filter[] = filterContent.split(",");
for(String st : filter){
kws1.add(new KeyWord(st));
}
// 根据敏感词,初始化敏感词搜索器
KWSeeker kwSeeker1 = new KWSeeker(kws1);
//判断替换值是否为空,为空按*处理
if(StringUtils.isNotEmpty(customContent)){
String custom[] = customContent.split(",");
text = process(filter, custom, text);
}else{
text = kwSeeker1.replaceWords(text);
}
}
return text;
}
/**
* 处理多对应值
* @param filter 带过滤内容
* @param custom 值
* @param text 内容
*/
public String process(String filter[] ,String custom[] ,String text){
//如果相等,那么一个值替换一个字段,如果不相等,能对应上的对应替换,对应不上的设为*
if(filter.length == custom.length){
for(int i=0;i< filter.length;i++){
Set<KeyWord> kws1 = new HashSet<KeyWord>();
kws1.add(new KeyWord(filter[i]));
// 根据敏感词,初始化敏感词搜索器
KWSeeker kwSeeker1 = new KWSeeker(kws1);
text = (String) kwSeeker1.process(new Highlight(), text, new IgnoreFragment(custom[i]));
}
}else{
for(int i=0;i< filter.length;i++){
Set<KeyWord> kws1 = new HashSet<KeyWord>();
kws1.add(new KeyWord(filter[i]));
// 根据敏感词,初始化敏感词搜索器
KWSeeker kwSeeker1 = new KWSeeker(kws1);
if(i<custom.length){
text = (String) kwSeeker1.process(new Highlight(), text, new IgnoreFragment(custom[i]));
}else{
text = kwSeeker1.replaceWords(text);
}
}
}
return text;
}