使用背景
对用户所提交的内容中的敏感性词语进行过滤;如“恐怖”、“色情”,“侮辱词语…”等需要过滤掉,用**词语替换掉。
注意敏感词以及对应*的个数对应。
代码展示
//1.对list集合进行遍历
list=list.stream().map(detailVo -> {
//2.定义返回类,赋值
List detail = new List();
BeanUtils.copyProperties(detailVo, detail);
for(int j=0;j<keyword.size();j++){
//3.判断敏感词的个数 -> 一个敏感词对应一个*...
int len = keyword.get(j).getWord().length();
//4.定义一个敏感词替换字符
String replace = "*";
//注意:我们定义的replace已经是*
//如果输入的是一个字符,直接替换即可,不用进下面的循环
for (int i = 0; i < len-1; i++) {//5.确定需要替换敏感词的长度,决定*的个数
replace += "*";
}
//5.替换敏感字
detail.setContent(detail.getContent().replace(keyword.get(j).getWord(), replace));
}
return detail;
}).collect(Collectors.toList());
讲解
1, Java中的Stream的所有操作都是针对流的,所以使用Stream必须要得到Stream对象
list = list.stream()
2, 由于要求是对list集合中的评论进行处理,所以需要用到map()遍历,通过.collect(Collectors.toList())得到操作后的集合
list.map().collect(Collectors.toList())
3, 做一个简单的copy
BeanUtils.copyProperties(detailVo, detail);
4, keyword是自定义的敏感字列表,循环keyword
for(){}
5, 判断每个敏感字词的长度
int len = keyword.get(j).getWord().length();
6, 设置替换字"*",根据敏感词的长度,决定替换词的个数
7, 替换开始
detail.setContent(detail.getContent().replace(keyword.get(j).getWord(), replace));
8, 返回list中的每一项
效果