- public String replaceAllWord(String[] arr,String content){
- char conCharArry[] = content.toCharArray();
- //这里key为每个敏感词的第一个字符,里面放着第一个字符相同的敏感词list集合
- Map<Character, List<String>> word = new HashMap<Character, List<String>>();
- //遍历数组生成敏感词map对象
- for(String str : arr){
- char key = str.charAt(0);
- List<String> list = word.get(key);
- if(list == null){
- list = new ArrayList<String>();
- list.add(str);
- word.put(key, list);
- }else{
- list.add(str);
- }
- }
- //对内容每一个字符进行遍历,如果当前字符为敏感词的首字符则进行下面行为否则continue本次操作
- for(int i = 0 ; i < conCharArry.length; i++){
- List<String> list = word.get(conCharArry[i]);
- if(list == null){
- continue;
- }
- for(String str : list){
- char words[] = str.toCharArray();
- //对是否匹配一个完整的敏感词进行标志,如果匹配敏感词过程中有一个字符不符则标注为false
- boolean mark = true;
- for(int j = 0; j < words.length; j++){
- if(words[j] != conCharArry[j+i]){
- mark = false;
- break;
- }
- }
- //把敏感词逐个替换成*
- if(mark){
- for(int j = 0; j < words.length; j++){
- conCharArry[i++] = '*';
- }
- }
- }
- }
- return new String(conCharArry);
- }