敏感词过滤

/**
 * 类名称:FilteredResult
 * 类描述:
 * 创建人:linguo
 * 创建时间:2014-10-27 上午9:47:47
 * 修改人:
 * 修改时间:
 * 修改备注:
 * @version 1.0.0
 */

public class FilteredResult
{
  private Integer level;
  private String filteredContent;
  private String badWords;
  private String originalContent;
  
  public String getBadWords()
  {
    return this.badWords;
  }
  
  public void setBadWords(String badWords)
  {
    this.badWords = badWords;
  }
  
  public FilteredResult() {}
  
  public FilteredResult(String originalContent, String filteredContent, Integer level, String badWords)
  {
    this.originalContent = originalContent;
    this.filteredContent = filteredContent;
    this.level = level;
    this.badWords = badWords;
  }
  
  public Integer getLevel()
  {
    return this.level;
  }
  
  public void setLevel(Integer level)
  {
    this.level = level;
  }
  
  public String getFilteredContent()
  {
    return this.filteredContent;
  }
  
  public void setFilteredContent(String filteredContent)
  {
    this.filteredContent = filteredContent;
  }
  
  public String getOriginalContent()
  {
    return this.originalContent;
  }
  
  public void setOriginalContent(String originalContent)
  {
    this.originalContent = originalContent;
  }
}


import java.util.HashMap;
import java.util.Map;

/**
 * 类名称:Node
 * 类描述:
 * 创建人:linguo
 * 创建时间:2014-10-27 上午9:46:49
 * 修改人:
 * 修改时间:
 * 修改备注:
 * @version 1.0.0
 */

public class Node
{
  private Map<String, Node> children = new HashMap(0);
  private boolean isEnd = false;
  private int level = 0;
  
  public Node addChar(char c)
  {
    String cStr = String.valueOf(c);
    Node node = (Node)this.children.get(cStr);
    if (node == null)
    {
      node = new Node();
      this.children.put(cStr, node);
    }
    return node;
  }
  
  public Node findChar(char c)
  {
    String cStr = String.valueOf(c);
    return (Node)this.children.get(cStr);
  }
  
  public boolean isEnd()
  {
    return this.isEnd;
  }
  
  public void setEnd(boolean isEnd)
  {
    this.isEnd = isEnd;
  }
  
  public int getLevel()
  {
    return this.level;
  }
  
  public void setLevel(int level)
  {
    this.level = level;
  }
}

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 类名称:WordFilterUtil
 * 类描述:
 * 创建人:linguo
 * 创建时间:2014-10-27 上午9:48:19
 * 修改人:
 * 修改时间:
 * 修改备注:
 * @version 1.0.0
 */

public class WordFilterUtil
{
  private static Node tree = new Node();
  
  static
  {
    InputStream is = WordFilterUtil.class.getResourceAsStream("/SensitiveWord.txt");
    try
    {
      InputStreamReader reader = new InputStreamReader(is, "UTF-8");
      Properties prop = new Properties();
      prop.load(reader);
      Enumeration en = prop.propertyNames();
      
      while (en.hasMoreElements())
      {
        String word = (String)en.nextElement();
        insertWord(word, Integer.valueOf(prop.getProperty(word)).intValue());
      }
    }
    catch (UnsupportedEncodingException e)
    {
      e.printStackTrace();
      if (is != null) {
        try
        {
          is.close();
        }
        catch (IOException e1)
        {
          e.printStackTrace();
        }
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
      if (is != null) {
        try
        {
          is.close();
        }
        catch (IOException e2)
        {
          e.printStackTrace();
        }
      }
    }
    finally
    {
      if (is != null) {
        try
        {
          is.close();
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
      }
    }
  }
  
  private static void insertWord(String word, int level)
  {
    Node node = tree;
    for (int i = 0; i < word.length(); i++) {
      node = node.addChar(word.charAt(i));
    }
    node.setEnd(true);
    node.setLevel(level);
  }
  
  private static boolean isPunctuationChar(String c)
  {
    String regex = "[\\pP\\pZ\\pS\\pM\\pC]";
    Pattern p = Pattern.compile(regex, 2);
    Matcher m = p.matcher(c);
    return m.find();
  }
  
  private static PunctuationOrHtmlFilteredResult filterPunctation(String originalString)
  {
    StringBuffer filteredString = new StringBuffer();
    ArrayList<Integer> charOffsets = new ArrayList();
    for (int i = 0; i < originalString.length(); i++)
    {
      String c = String.valueOf(originalString.charAt(i));
      if (!isPunctuationChar(c))
      {
        filteredString.append(c);
        charOffsets.add(Integer.valueOf(i));
      }
    }
    PunctuationOrHtmlFilteredResult result = new PunctuationOrHtmlFilteredResult();
    result.setOriginalString(originalString);
    result.setFilteredString(filteredString);
    result.setCharOffsets(charOffsets);
    return result;
  }
  
  private static PunctuationOrHtmlFilteredResult filterPunctationAndHtml(String originalString)
  {
    StringBuffer filteredString = new StringBuffer();
    ArrayList<Integer> charOffsets = new ArrayList();
    int i = 0;
    for (int k = 0; i < originalString.length(); i++)
    {
      String c = String.valueOf(originalString.charAt(i));
      if (originalString.charAt(i) == '<')
      {
        for (k = i + 1; k < originalString.length(); k++) {
          if (originalString.charAt(k) == '<') {
            k = i;
          } else {
            if (originalString.charAt(k) == '>') {
              break;
            }
          }
        }
        i = k;
      }
      else if (!isPunctuationChar(c))
      {
        filteredString.append(c);
        charOffsets.add(Integer.valueOf(i));
      }
    }
    PunctuationOrHtmlFilteredResult result = new PunctuationOrHtmlFilteredResult();
    result.setOriginalString(originalString);
    result.setFilteredString(filteredString);
    result.setCharOffsets(charOffsets);
    return result;
  }
  
  private static FilteredResult filter(PunctuationOrHtmlFilteredResult pohResult, char replacement)
  {
    StringBuffer sentence = pohResult.getFilteredString();
    ArrayList<Integer> charOffsets = pohResult.getCharOffsets();
    StringBuffer resultString = new StringBuffer(pohResult.getOriginalString());
    StringBuffer badWords = new StringBuffer();
    int level = 0;
    Node node = tree;
    int start = 0;int end = 0;
    for (int i = 0; i < sentence.length(); i++)
    {
      start = i;
      end = i;
      node = tree;
      for (int j = i; j < sentence.length(); j++)
      {
        node = node.findChar(sentence.charAt(j));
        if (node == null) {
          break;
        }
        if (node.isEnd())
        {
          end = j;
          level = node.getLevel();
        }
      }
      if (end > start)
      {
        for (int k = start; k <= end; k++) {
          resultString.setCharAt(((Integer)charOffsets.get(k)).intValue(), replacement);
        }
        if (badWords.length() > 0) {
          badWords.append(",");
        }
        badWords.append(sentence.substring(start, end + 1));
        i = end;
      }
    }
    FilteredResult result = new FilteredResult();
    result.setOriginalContent(pohResult.getOriginalString());
    result.setFilteredContent(resultString.toString());
    result.setBadWords(badWords.toString());
    result.setLevel(Integer.valueOf(level));
    return result;
  }
  
  public static String simpleFilter(String sentence, char replacement)
  {
    StringBuffer sb = new StringBuffer();
    Node node = tree;
    int start = 0;int end = 0;
    for (int i = 0; i < sentence.length(); i++)
    {
      start = i;
      end = i;
      node = tree;
      for (int j = i; j < sentence.length(); j++)
      {
        node = node.findChar(sentence.charAt(j));
        if (node == null) {
          break;
        }
        if (node.isEnd()) {
          end = j;
        }
      }
      if (end > start)
      {
        for (int k = start; k <= end; k++) {
          sb.append(replacement);
        }
        i = end;
      }
      else
      {
        sb.append(sentence.charAt(i));
      }
    }
    return sb.toString();
  }
  
  public static FilteredResult filterText(String originalString, char replacement)
  {
    return filter(filterPunctation(originalString), replacement);
  }
  
  public static FilteredResult filterHtml(String originalString, char replacement)
  {
    return filter(filterPunctationAndHtml(originalString), replacement);
  }
  
  private static class PunctuationOrHtmlFilteredResult
  {
    private String originalString;
    private StringBuffer filteredString;
    private ArrayList<Integer> charOffsets;
    
    public String getOriginalString()
    {
      return this.originalString;
    }
    
    public void setOriginalString(String originalString)
    {
      this.originalString = originalString;
    }
    
    public StringBuffer getFilteredString()
    {
      return this.filteredString;
    }
    
    public void setFilteredString(StringBuffer filteredString)
    {
      this.filteredString = filteredString;
    }
    
    public ArrayList<Integer> getCharOffsets()
    {
      return this.charOffsets;
    }
    
    public void setCharOffsets(ArrayList<Integer> charOffsets)
    {
      this.charOffsets = charOffsets;
    }
  }
}

SensitiveWord.txt

加qq=4
傻逼=4
笨蛋=4
我操=4
我草=4
我艹=4
卧槽=4
白痴=4
脑残=4
牛逼=4
神经病=4
蠢货=4
艹你妈=4
操你妈=4
cao你妈=4
草你妈=4
8964=4
TMD=4
SB=4
sb=4
Sb=4
sB=4
CNM=4
cnm=4
GNN=4
gun=4
ONS=4
ons=4
一夜情=4
裸聊=4
约炮=4
阿扁=4
办理文凭=4
办理证件=4
暴力拆迁=4
藏独=4
陈水扁=4
成人电影=4
成人片=4
出售假币=4
出售枪支=4
出售手枪=4
春药=4
催情药=4
达赖=4
大法=4
大纪元=4
大学骚乱=4
戴海静=4
帝国之梦=4
第五代领导=4
赌博=4
短信群发器=4
对日强硬=4
恶搞晚会=4
我是小狗=4
条狗=4
反共=4
反华=4
反民主=4
反政府=4
高干子弟=4
高干子女=4
高校暴乱=4
高校群体事件=4
高校骚乱=4
古方迷香=4
官商勾结=4
鬼村=4
胡耀邦=4
换妻=4
黄色小电影=4
昏药=4
激情小电影=4
佳静安定片=4
监听王=4
江必新=4
疆独=4
近親相姦=4
禁书=4
军长发威=4
黎阳平=4
李洪志=4
六合彩=4
六四事件=4
卢跃刚=4
轮奸=4
麻醉钢枪=4
麻醉枪=4
麻醉药=4
麻醉乙醚=4
买卖枪支=4
毛一鲜=4
蒙汗药粉=4
迷昏药=4
迷奸药=4
迷药=4
拍肩神药=4
盘古乐队=4
前门地区改造=4
枪决女犯=4
枪决现场=4
枪支弹药=4
强奸=4
强效失意药=4
强硬发言=4
窃听器=4
窃听器材=4
肉棍=4
三唑仑=4
色情服务=4
色情小电影=4
身份证生成器=4
升达毕业证=4
十七届常委=4
手机复制=4
四川大学江安校区=4
宋平一句话=4
台独=4
特码=4
天安门事件=4
天鹅之旅=4
通货膨胀=4
投毒杀人=4
透视眼镜=4
退党=4
无界浏览器=4
西藏天葬=4
西山会议=4
小穴=4
新唐人=4
血腥图片=4
摇头丸=4
乙醚=4
淫靡=4
淫水=4
远程偷拍=4
张小平=4
赵紫阳=4
侦探设备=4
真善忍=4
政治风波=4
中共高干=4
中共激烈内斗=4
中共近期权力斗争=4
中共权力斗争=4
中共十七布局=4
中共十七常委名单=4
中共十七人选=4
中共心中最大的恐惧=4
中国储君=4
中国改革年代政治斗争=4
中国高层权力斗争=4
中国高层人事变动解读=4
中国三大流氓职业=4
中国太子=4
中国政坛“明日之星”=4
中国政坛“清华帮”盛极而衰=4
中南海波澜起伏=4
中南海大决战=4
中南海的权力游戏=4
中南海斗争=4
中南海高层权力斗争=4
中南海惊现东宫小朝廷=4
中南海秘闻=4
中南海内斗=4
中南海浓云密布=4
中南海权力斗争=4
中央警卫局大换血=4
中央派系斗争=4
中央十七=4
中央团系=4
中央政治局推荐人选=4
子女任职名单=4
自杀手册=4
自杀指南=4
自制手枪=4
总书记的红人=4
物价上涨=4
性药品=4
性病=4
胡锦涛=4
***=4
吴邦国=4
温家宝=4
贾庆林=4
罗干=4
李长春=4
习近平=4
李克强=4
贺国强=4
周永康=4
李鹏=4
朱镕基=4
张德江=4
汪洋=4
黄华华=4
刘玉浦=4
朱明国=4
黄龙云=4
胡泽君=4
朱小丹=4
肖志恒=4
辛国荣=4
林雄=4
梁伟发=4
周镇宏=4
许宗衡=4
白天=4
谭国箱=4
李意珍=4
王穗明=4
崔晓汉=4
戴北方=4
李锋=4
王京生=4
刘应力=4
吕锐锋=4
王毅=4
毛主席复活=4
先烈的电话=4
江姐问=4
董存瑞问=4
杨子荣问=4
被阿扁推翻了=4
杨白劳问=4
自由门=4
无界浏览=4
加密浏览=4
代理上网=4
游行=4
示威=4
进京上访=4
自杀=4
爆炸=4
炸毁=4
放弃早期承诺=4
声明=4
中央军委扩大会议=4
专业快速深户咨询=4
快速办理深户咨询=4
深圳红印户口咨询=4
针孔摄像头=4
针孔摄像机=4
枪支=4
蒙汗药=4
爆炸物=4
雷管制造技术=4
炸药制作方法=4
核弹制作方法=4
核武器制作方法=4
收视卡=4
电子解码器=4
发帖机=4
信息群发器=4
代办证件=4
办证=4
电视解密=4
电视共享=4
针孔=4
窃听=4
透视=4
隐型耳机=4
群发器=4
枪=4
弓弩=4
迷情粉=4
催情=4
迷昏=4
迷魂=4
迷幻=4
迷情=4
迷魂药=4
钢珠枪=4
弩枪=4
强力弩枪=4
麻醉抢=4
仿真手枪=4
刚珠枪=4
猎枪=4
雷管制造=4
炸弹=4
火药=4
炸弹物=4
代开发票=4
假币=4
代开增值税=4
手机改号软件=4
手枪=4
蒙独=4
高句丽=4
渤海国=4
九评=4
法轮=4
法一轮=4
太比力克=4
国际公法=4
國際公法=4
解放军301医院=4
最后的兵团=4
猎头者=4
保姆日记=4
双面女友=4
动画-小羊肖恩=4
笑笑羊=4
实际神=4
大法洪传=4
弘法会=4
灵修团体=4
五套法=4
宇宙最高法理=4
珐论大珐=4
世纪大案=4
世纪血腥=4
伊波拉=4
绝世遗言=4
独臂老人=4
睁开慧眼=4
百志=4
双面胶=4
功友=4
法轮功=4
大陆同修=4
法轮功=4
洗瑙=4
李大师=4
江浙民=4
法正人间=4
法正乾坤=4
正法时期=4
海外护法=4
洪法交流=4
老虎机=4
赌=4
扑克=4
赌球=4
赌马=4
三公=4
外围=4
赌恒指=4
庄家=4
赔率=4
盘口=4
下盘=4
肖中特=4
香港六合彩总公司=4
香港六合彩=4
香港赛马会=4
香港赛马会六合网=4
香港赛马会大型六合彩资讯网=4
香港皇马科技有限公司=4
香港捷通3C科技有限公司=4
香港华典数码3C集团=4
香港恒海国际科技有限公司=4
香港永和电子国际科技有限公司=4
香港新通豪科技有限公司=4
蚁力神=4
春运=4
呼尔浩特枪击=4
王志平=4
关六如=4
转让火车票=4
潮州性奴=4
钱东镇=4
四川猎杀大熊猫案=4
国家英语四级试题=4
国家英语六级试题=4
全国人民代表大会=4
人大常委=4
人大代表=4
人大会议=4
新生网=4
天安门=4
共产主义=4
共产党=4
中共=4
反革命=4
盗取=4
绕过封锁=4
新疆独立=4
西藏独立=4
民运分子=4
打倒=4
推翻=4
多党执政=4
专制=4
国民党=4
六四19周年=4
广场上的热血=4
历史的伤口=4
大跃进50周年=4
知识青年上山下乡运动40周年=4
改革开放30周年=4
出售K粉=4
冰毒=4
海洛因=4
麻古=4
毒品配方=4
麻古制作方法=4
麻古制作工艺=4
麻古制作技术=4
冰毒制作方法=4
冰毒制作工艺=4
冰毒制作技术=4
冰毒配方讲解光盘=4
吗啡=4
4号=4
红K=4
鸦片=4
甲基苯丙胺(冰毒)=4
大麻=4
可卡因=4
曲马多=4
异丙嗪=4
丁丙诺啡=4
地西泮=4
二乙酰吗啡=4
LSD=4
醋酸酐=4
麻黄素=4
罂粟=4
罂粟籽=4
冰毒片=4
甲基安非他明=4
唠嗑药=4
抢劫药=4
强奸药=4
马药=4
麻药=4
疯药=4
广古=4
缅古=4
丙酮=4
氯胺酮=4
Ketamine=4
盐酸氯胺酮=4
盐酸=4
氨水=4
无水乙醇=4
活性碳=4
盐酸羟亚胺=4
MDMA=4
氢氧化钠=4
赤磷=4
去氧麻黄碱=4
甲基苯丙胺=4
盐酸去氧麻黄碱=4
我们自杀吧=4
渊盖苏文=4
大祚荣=4
太王四神记=4
朱蒙=4
朱蒙IN英语=4
VOA采访热比娅=4
完全自杀手册=4
淫荡=4
催眠=4
叫床=4
**=4
女优=4
好色=4
妓女=4
小杜=4
小电影=4
屄=4
应召女郎=4
应招=4
情爱=4
情网=4
情色=4
成人教育=4
成人网站=4
风流=4
阴户=4
阴唇=4
阴茎=4
阴蒂=4
激情图片=4
激情电影=4
成人小说=4
口交=4
乱伦=4
手淫=4
做鸡=4
裸体=4
麻醉=4
中国领导人的最强阵容=4
锦涛和阿扁的对联=4
日本的言论=4
福娃变换角度=4
毛主席和小平的对话=4
自制固体火箭全过程=4
我希望中国能有这样一道测试题=4
中国是全球唯一绝对不能惹的国家=4
刘德华与胡哥的对话=4
性教育,A级片毛片下载男男影院,男男激情,看片区=4
性图片区艳情小说古装情欲力作男女激情片下载=4
免费艳情淫秽小说淫秽bt电影淫秽图片=4
日好色女成人网bt色情电影色情小电影=4
各类枪枝及防身器=4
制作原子弹的方法=4
香港强效迷幻GHB水=4
致人大代表的信=4
透视中国现代民谣=4
邓小平的预言=4
CT透视器银行卡复制器=4
手机追踪=4
西藏暴动=4
手枪的制作工艺流程=4
卖炸药=4
神灯=4
奥运五福娃邪恶版=4
四大怪事=4
文盲=4
大规模反中游行=4
英语四六八级=4
讨薪=4
共产党说反腐=4
马前课=4
李庆善=4
邓善红=4
官商暴利=4
花木兰=4
集资骗局=4
林龙飞=4
孙悟空与阿西娜的故事=4
仙笛=4
曾国华=4
淫浪=4
阴部=4
蚁力神公司=4
养殖蚂蚁=4
李玉书=4
环三亚甲基三硝氨=4
大乌拉尔=4
炸弹遥控器=4
毒素=4
万里大造林=4
四大扯蛋=4
奥运会徽车祸版=4
张思卿=4
大陆高干子女名单=4
G点=4
杨汝岱=4
集体静坐=4
加油机干扰器=4
袭击=4
秘密串联=4
雷管=4
黑社会=4
SARS=4
南通儿童福利院=4
张衡生冻毙=4
新疆克拉玛依火灾=4
李其炎=4
突厥革命=4
灭亡中国=4
出海保钓=4
制式54式=4
张宗海=4
邓小平讲英语=4
小口径步枪=4
军用枪支=4
巴西预言家=4
酣乐欣=4
手机跟踪定位器=4
岳岐峰=4
黄菊=4
恐怖分子=4
倒卖土地=4
推翻共产党=4
推背图=4
CT透视器=4
陈慕华=4
李泽民=4
床戏=4
李纪周=4
沪霸天=4
布赫=4
李锡铭=4
厕所男女标识=4
南京大屠杀=4
奥运火炬吹灭=4
假钞=4
燃烧弹=4
广州火车站=4
双管猎枪=4
暴政=4
独裁=4
万能钥匙=4
古方化骨水=4
差额选举=4
监听器=4
银行卡复制器=4
万能开锁器=4
手表式作弊器=4
定制消失笔=4
高低压三箭=4
瘟假报=4
胡紧掏=4
奥运火炬传递=4
吉瑟利努=4
呼和浩特市委副书记=4
出售迷魂药=4
上岛保钓=4
九jiu评=4
血本无归=4
基地组织=4
暴动=4
流感大变种=4
抗议=4
陶驷驹=4
中国断交=4
叶选平=4
二氧化碳动力气枪=4
地磅干扰器=4
无线影音发射器=4
奥运会开幕式=4
手机截听器=4
总输记=4
屏蔽器=4
声明退出中国少先队=4
十七大人大代表=4
李灏=4
邪恶中共=4
空军会议=4
赵志浩=4
王忍之=4
大地震=4
奶头=4
炸药的合成=4
卢瑞华=4
早泄=4
八大谎言=4
三反五反杀地主=4
藏字石=4
恐怖袭击=4
奥运吉祥物=4
迷昏香烟=4
强震海啸=4
三朝天子=4
李贵鲜=4
淫欲=4
电子地磅解码器=4
讲话摘录=4
梅花诗=4
内蒙古=4
五大原则=4
厉有为=4
二手老虎机=4
手机窃听器=4
恽代英=4
先烈来电=4
三个三代表=4
594437184=4
无线监听工具=4
邪党=4
陈敏章=4
七大谎言=4
上访=4
无耻语录排行榜=4
廖晖=4
全树仁=4
中国共产党亡=4
圣经启示录=4
毛主席复活后=4
自制固体火箭=4
李伯勇=4
氰化钠=4
伍绍祖=4
葛洪升=4
苦难的中国=4
陈相贵=4
制造炸弹=4
遥控炸弹=4
沙菲片=4
邵奇惠=4
氰化钾=4
硝酸甘油炸药制造=4
改革六大成绩=4
监视器偷拍=4
中国平安=4
私下肮脏的交易=4
平安保险=4
中国国际战略研究网=4
两会十大废话议案=4
C4=4
鸿泰数码科技=4
张鼎丞=4
张国堂=4
玛雅预言=4
魔鬼政治词典=4
摘取器官=4
本拉登=4
胡主席=4
赌博透视器=4
杀知识分子=4
文革杀资产阶级=4
麻醉手枪=4
钢珠手枪=4
手雷=4
手榴弹=4
乳房=4
炸药配方=4
毒残酷迫=4
中共解体=4
徐其耀=4
简易炸蛋制作方法=4
老胡=4
李子彬=4
田纪云=4
五连猎枪=4
乳头=4
政府说为人民服务=4
老温=4
导弹DIY=4
钱冠林=4
64杀学生=4
吴国庆=4
自愿想退出少先队员团员党员=4
蚁力神非法集资案=4
刑讯逼供=4
全国二奶大赛揭晓=4
九jiu评=4
秋香版=4
宋平=4
声明退出=4
太子党名单=4
代考上网文凭=4
毛致用=4
代考=4
国外文凭=4
电视剧朱蒙=4
社保基金案=4
诸世纪=4
两性淫乱=4
公安部春节晚会=4
清明节=4
杀手=4
工字牌气枪=4
胡乔木=4
陈锦华=4
王汉斌=4
朱森林=4
十大无耻发言=4
外蒙古=4
宁波办证=4
毛主席=4
女税务干部=4
2008全球春节晚会=4
隐身装备=4
代办全国毕业学历=4
十大丑陋语录=4
激情下载=4
陈冠希=4
畲祥林冤案=4
包尔汉=4
六大成绩=4
杜导斌=4
精典黄色短信=4
荒唐禁令=4
全自动步枪=4
吕绣莲=4
麻姑=4
全套艳照门=4
高压麻醉枪=4
福娃变乌龟=4
共残拳=4
骚乱=4
包娼包赌=4
黑索今=4
杨枫=4
邓宝驹=4
讨要工钱=4
GHB=4
浩宇高等教育学历=4
地震海啸=4
亡国亡党=4
彭定鼎=4
中国印=4
射精=4
迷药防身药水=4
朱学勤=4
税务代理=4
免费淫奸黄色电影=4
黄色妹妹a级大片=4
弹簧压气=4
温云松=4
原子弹=4
挤踏身亡=4
香港GHB水=4
色粉=4
按摩女=4
王子淫传=4
美妹=4
阴囊=4
操=4
枪械=4
子弹=4
香港保钓会=4
定时炸弹=4
毛远新=4
卢嘉锡=4
曾庆红=4
刘少奇=4
做爱=4
毛新宇=4
吕秀莲=4
温总理=4
股灾空难=4
入联公投=4
九剑=4
迷香=4
最强领导人=4
地下的先烈们=4
友邦正通学历=4
无线窃听器=4
曾道人=4
服务中心代办=4
迷幻药=4
钓鱼岛=4
赌博作弊工具=4
黑色11月=4
天线宝宝马报=4

测试:

public class Test {

	public static void main(String args[]){//测试敏感词过滤
		String nickName="我草";
		if(null != nickName){
			if(nickName.indexOf("狗")!=-1 || nickName.indexOf("逼")!=-1){
				System.out.println("有敏感词");
			}
			FilteredResult res = WordFilterUtil.filterText(nickName, '*');
				if(res.getBadWords().length() > 0){
					System.out.println("有敏感词");
				}
			}	
		String word="234米%^&*赚2狗34条#狗";
		System.out.println(word.indexOf("狗"));
		word = word.replaceAll("狗", "*");
		FilteredResult res=WordFilterUtil.filterText(word, '*');
		System.out.println(res.getLevel());//检测到的敏感词中最高优先级的值 0为最小
		System.out.println(res.getFilteredContent().toString());//过滤后的字符串
		System.out.println(res.getBadWords());//敏感词列表
		System.out.println(res.getBadWords().length());//敏感词列表长度
		System.out.println(res.getOriginalContent());//原始字符串
	}

}


你可能感兴趣的:(敏感词过滤)