大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > Java敏感字符处理类

Java敏感字符处理类

关键词:Java敏感字符Java敏感字符处理类  阅读(596) 赞(16)

[摘要]本文主要是对Java敏感字符处理类的讲解,希望对大家学习Java敏感字符处理类有所帮助。

  敏感字符的处理,性能非常好,采用文件的方式,可通过代码增加敏感词等强大的功能

  在开源中国的基础上增加部分方法

  依赖apache的io 和lang包

  package com.wiker;

  import java.io.File;

  import java.io.IOException;

  import java.util.ArrayList;

  import java.util.List;

  import org.apache.commons.io.FileUtils;

  import org.apache.commons.io.LineIterator;

  import org.apache.commons.lang.StringUtils;

  /**

  * 敏感字词处理类

  * @author Wiker

  * @date 2010-1-11 下午10:51:30

  */

  public class BadWord {

  private final static File wordfilter = new File("C:/wordfilter.txt");

  private static long lastModified = 0L;

  private static List<String> words = new ArrayList<String>();

  private static void checkReload(){

  if(wordfilter.lastModified() > lastModified){

  synchronized(BadWord.class){

  try{

  lastModified = wordfilter.lastModified();

  LineIterator lines = FileUtils.lineIterator(wordfilter, "utf-8");

  while(lines.hasNext()){

  String line = lines.nextLine();

  if(StringUtils.isNotBlank(line))

  words.add(StringUtils.trim(line)。toLowerCase());

  }

  }catch(IOException e){

  e.printStackTrace();

  }

  }

  }

  }

  /**

  * 检查敏感字内容

  * @param contents

  */

  public static String check(String …contents) {

  if(!wordfilter.exists())

  return null;

  checkReload();

  for(String word : words){

  for(String content : contents)

  if(content!=null && content.indexOf(word) >= 0)

  return word;

  }

  return null;

  }

  /**

  * 检查字符串是否包含敏感词

  *

  * @param content

  * @return

  */

  public static boolean isContain(String content) {

  if(!wordfilter.exists())

  return false;

  checkReload();

  for(String word : words){

  if(content!=null && content.indexOf(word) >= 0)

  return true;

  }

  return false;

  }

  /**

 

  * 替换掉字符串中的敏感词

  *

  * @param str 等待替换的字符串

  * @param replaceChar 替换字符

  * @return

  */

  public static String replace(String str,String replaceChar){

  checkReload();

  for(String word : words){

  if(str.indexOf(word)>=0){

  String reChar = "";

  for(int i=0;i<word.length();i++){

  reChar += replaceChar;

  }

  str = str.replaceAll(word, reChar);

  }

  }

  return str;

  }

  public static List<String> lists() {

  checkReload();

  return words;

  }

  /**

  * 添加敏感词

  *

  * @param word

  * @throws IOException

  */

  public static void add(String word) throws IOException {

  word = word.toLowerCase();

  if(!words.contains(word)){

  words.add(word);

  FileUtils.writeLines(wordfilter, "UTF-8", words);

  lastModified = wordfilter.lastModified();

  }

  }

  /**

  * 删除敏感词

  *

  * @param word

  * @throws IOException

  */

  public static void delete(String word) throws IOException {

  word = word.toLowerCase();

  words.remove(word);

  FileUtils.writeLines(wordfilter, "UTF-8", words);

  lastModified = wordfilter.lastModified();

  }

  public static void main(String[] args) throws Exception{

  System.out.println(BadWord.replace("中国共产党钓鱼岛","*"));

  System.out.println(BadWord.isContain("岛"));

  BadWord.add("傻逼");

  }

  }



相关评论