您的位置:首页 > 编程语言 > Java开发

Java敏感字符串处理工具类(河蟹专用)

2016-05-17 00:00 441 查看
敏感字符的处理,性能非常好,采用文件的方式,可通过代码增加敏感词等强大的功能
依赖apache的io 和lang包,惯例还是直接code吧:

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("傻逼");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: