java敏感词替换(转载)

 

  1. public String replaceAllWord(String[] arr,String content){  
  2.         char conCharArry[] = content.toCharArray();  
  3.         //这里key为每个敏感词的第一个字符,里面放着第一个字符相同的敏感词list集合  
  4.         Map<Character, List<String>> word = new HashMap<Character, List<String>>();  
  5.           
  6.         //遍历数组生成敏感词map对象  
  7.         for(String str : arr){  
  8.             char key = str.charAt(0);  
  9.             List<String> list = word.get(key);  
  10.             if(list == null){  
  11.                 list = new ArrayList<String>();  
  12.                 list.add(str);  
  13.                 word.put(key, list);  
  14.             }else{  
  15.                 list.add(str);  
  16.             }  
  17.         }  
  18.   
  19.         //对内容每一个字符进行遍历,如果当前字符为敏感词的首字符则进行下面行为否则continue本次操作  
  20.         for(int i = 0 ; i < conCharArry.length; i++){  
  21.             List<String> list = word.get(conCharArry[i]);  
  22.               
  23.             if(list == null){  
  24.                 continue;  
  25.             }  
  26.               
  27.             for(String str : list){  
  28.                 char words[] = str.toCharArray();  
  29.                 //对是否匹配一个完整的敏感词进行标志,如果匹配敏感词过程中有一个字符不符则标注为false  
  30.                 boolean mark = true;  
  31.                 for(int j = 0; j < words.length; j++){  
  32.                     if(words[j] != conCharArry[j+i]){  
  33.                         mark = false;  
  34.                         break;  
  35.                     }  
  36.                 }  
  37.                   
  38.                 //把敏感词逐个替换成*  
  39.                 if(mark){  
  40.                     for(int j = 0; j < words.length; j++){  
  41.                         conCharArry[i++] = '*';  
  42.                     }  
  43.                 }  
  44.             }  
  45.         }  
  46.           
  47.         return new String(conCharArry);  
  48.           
  49.       }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值