JAVA 实现DFA算法
2017-01-18 00:00
232 查看
1、创建敏感字Map
2、创建正则特殊符号过滤
3、校验字符串
public static Map addWordToHashMap(Set<String> keyWordSet) { if(0 == keyWordSet.size()) return new HashMap(); Map map = new HashMap(keyWordSet.size()); String key = null; Map nowMap = null; Map<String, String> newWorMap = null; Iterator<String> iterator = keyWordSet.iterator(); while(iterator.hasNext()){ key = iterator.next(); nowMap = map; for(int i = 0; i < key.length(); i++){ char keyChar = key.charAt(i); Map wordMap = (Map) nowMap.get(keyChar); if(wordMap != null) nowMap = wordMap; else{ newWorMap = new HashMap<String,String>(); nowMap.put(keyChar, newWorMap); nowMap = newWorMap; } if(i == key.length() - 1) nowMap.put("isEnd", "1"); } } return map; }
2、创建正则特殊符号过滤
public static String formatString(String str) { if (StringUtils.isNotBlank(str)) { String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; return Pattern.compile(regEx).matcher(str).replaceAll("").trim(); } return ""; }
3、校验字符串
public static String checkWork(String txt, Map map, boolean needToFormat) { try { if (needToFormat) txt = formatString(txt); StringBuffer sb = new StringBuffer(); boolean has = false; char word; int num; for (int i = 0; i < txt.length(); i++) { word = txt.charAt(i); sb = new StringBuffer(word); if (map.containsKey(word)) { Map m = (Map) map.get(word); sb.append(word); num = i + 1; while (true) { if (num < txt.length()) { word = txt.charAt(num++); sb.append(word); if (m.containsKey(word)){ m = (Map) m.get(word); if (m.containsKey("isEnd")) { has = true; return sb.toString(); } } else break; } else break; } } } if (has) return sb.toString(); } catch (Exception e) { //logger.error("检验敏感字出错,原因为:{}", e); e.printStackTrace; } return null; }
相关文章推荐
- java敏感词过滤-使用HashMap实现DFA算法
- Java实现敏感词过滤 - DFA算法
- java敏感词过滤-使用HashMap实现DFA算法
- Java实现敏感词过滤 - DFA算法
- java敏感词过滤-使用HashMap实现DFA算法
- java敏感词过滤-使用HashMap实现DFA算法
- Java实现敏感词过滤 - DFA算法
- 在java中实现对FORM的打印功能
- 如何在Java应用程序中实现copy图像功能。
- 用JAVA实现Undo、Redo,Copy、Paste、Cut
- 用Java实现的设计模式系列(2)-Prototype
- http断点续传简单实现(java)
- 用 Java 实现回调例程
- 用Java实现的设计模式系列(3)--Builder
- 使用 .NET实现JavaTM Pet Store J2EETM 蓝图应用程序
- 在Java程序,如何实现自适应位置的快捷菜单
- 用Java实现的设计模式系列(1)-Factory
- 利用Java实现串口全双工通讯
- 利用Java实现zip压缩/解压缩
- Java Tip: 用Reflection实现Visitor模式