打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java 敏感字符处理类,功能非常强大
敏感字符的处理,性能非常好,采用文件的方式,可通过代码增加敏感词等强大的功能
在开源中国的基础上增加部分方法
依赖apache的io 和lang包
[java] view plaincopy
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("傻逼");
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微信支付之扫码支付(java版 native原生支付)
16进制字符串与byte数组互转
用Java和Perl登录新浪微博
java几个实用的文件操作方法
Java创建TXT文件并进行读、写、修改操作
用DOM/JDOM解析XML文件(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服