• 大小: 0.22M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: Java
  • 标签: 其他  

资源简介

敏感词库(27000条)代码实现敏感词过滤(java).zip

资源截图

代码片段和文件信息

package com.linkipr.framework.sensitive;

import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @Description: 敏感词过滤
 * @Project:test
 * @Author : 张巍
 */
public class SensitivewordFilter {
    @SuppressWarnings(“rawtypes“)
    private Map sensitiveWordMap = null;
    public static int minMatchTYpe = 1;      //最小匹配规则
    public static int maxMatchType = 2;      //最大匹配规则

    /**
     * 构造函数,初始化敏感词库
     */
    public SensitivewordFilter() {
        sensitiveWordMap = new SensitiveWordInit().initKeyWord();
    }

    /**
     * 判断文字是否包含敏感字符
     *
     * @param txt       文字
     * @param matchType 匹配规则 1:最小匹配规则,2:最大匹配规则
     * @return 若包含返回true,否则返回false
     * @author 张巍
     */
    public boolean isContaintSensitiveWord(String txt int matchType) {
        boolean flag = false;
        for (int i = 0; i < txt.length(); i++) {
            int matchFlag = this.CheckSensitiveWord(txt i matchType); //判断是否包含敏感字符
            if (matchFlag > 0) {    //大于0存在,返回true
                flag = true;
            }
        }
        return flag;
    }

    /**
     * 获取文字中的敏感词
     *
     * @param txt       文字
     * @param matchType 匹配规则 1:最小匹配规则,2:最大匹配规则
     * @return
     * @author 张巍
     */
    public Set getSensitiveWord(String txt int matchType) {
        Set sensitiveWordList = new HashSet<>();

        for (int i = 0; i < txt.length(); i++) {
            int length = CheckSensitiveWord(txt i matchType);    //判断是否包含敏感字符
            if (length > 0) {    //存在加入list中
                sensitiveWordList.add(txt.substring(i i + length));
                i = i + length - 1;    //减1的原因,是因为for会自增
            }
        }

        return sensitiveWordList;
    }

    /**
     * 替换敏感字字符
     *
     * @param txt
     * @param matchType
     * @param replaceChar 替换字符,默认*
     * @author 张巍
     */
    public String replaceSensitiveWord(String txt int matchType String replaceChar) {
        String resultTxt = txt;
        Set set = getSensitiveWord(txt matchType);     //获取所有的敏感词
        Iterator iterator = set.iterator();
        String word = null;
        String replaceString = null;
        while (iterator.hasNext()) {
            word = iterator.next();
            replaceString = getReplaceChars(replaceChar word.length());
            resultTxt = resultTxt.replaceAll(word replaceString);
        }

        return resultTxt;
    }

    /**
     * 获取替换字符串
     *
     * @param replaceChar
     * @param length
     * @return
     * @author 张巍
     */
    private String getReplaceChars(String replaceChar int length) {
        String resultReplace = replaceChar;
        for (int i = 1; i < length; i++) {
            resultReplace += replaceChar;
        }

        return resultReplace;
    }

    /

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-03-03 16:49  敏感词库(27000条)+代码实现敏感词过滤(java)\
     目录           0  2017-03-03 16:49  敏感词库(27000条)+代码实现敏感词过滤(java)\java实现\
     文件        8000  2017-02-28 15:38  敏感词库(27000条)+代码实现敏感词过滤(java)\java实现\SensitivewordFilter.java
     文件        3954  2017-02-28 16:55  敏感词库(27000条)+代码实现敏感词过滤(java)\java实现\SensitiveWordInit.java
     文件      465590  2017-02-28 18:40  敏感词库(27000条)+代码实现敏感词过滤(java)\key.txt

评论

共有 条评论