呵呵 老长时间没做总结了,今天有时间再写第二篇笔记
在游戏中的聊天室当然也可以是其他应用中的涉及到聊天敏感信息,如:政治性的某某的名字或人们给其封的代号、色情词语、脏话、游戏中敏感的信息等等,这些信息都需要过滤,过滤有很多算法,今天就先说下曾经用的一种较为简单的实例
package com.util.filter;import java.util.ArrayList;import java.util.List;/** * @author ZhangYude * @date 2012-10-12 * @version 1.4 * @since 2012 * @desc: * 过滤关键词(可以来自文本或数据库) */public class FilterContextKey { public static final String REPLACE_CONTEXT= "*"; /** * 要过滤的关键词 */ public String key; public FilterContextKey(String key) { super(); this.key = key; } public static ListloadFilterKeys(){ List list = new ArrayList (); list.add(new FilterContextKey("TMD")); list.add(new FilterContextKey("T M D")); list.add(new FilterContextKey("他妈的")); list.add(new FilterContextKey("他 妈 的")); list.add(new FilterContextKey("操")); list.add(new FilterContextKey("草")); list.add(new FilterContextKey("日")); list.add(new FilterContextKey("sb")); list.add(new FilterContextKey("s b")); return list; }}---------------------------------------------------------------------------------------------package com.util.filter;import java.util.HashMap;import java.util.List;/** * @author ZhangYude * @date 2012-10-12 * @version 1.4 * @since 2012 * @desc: * 内容过滤器 */public class FilterContextUtil { /** * 过滤的关键词列表 */ private static HashMap filterKeys; /** * 关键词的最大长度 */ private static int keyMaxLength; /** * 初始化信息 */ private static void initInfo(){ List filterKeysList = FilterContextKey.loadFilterKeys(); int keyLength = 0; if(filterKeysList.size()>0){ filterKeys = new HashMap (); keyMaxLength = 0; for(FilterContextKey key:filterKeysList){ keyLength = key.key.length(); //把要过滤的敏感词用“*”代替,放入到Map中,方便匹配 filterKeys.put(key.key.toLowerCase(), getReplaceKey(keyLength)); //找到过滤敏感词的最大长度 if(keyMaxLength