JAVA 简单屏蔽词处理

1.创建一个.properties的文件,我这里创建的是word.properties,里面书写有你想要屏蔽的敏感词;


2.创建一个类帮助类,我这里创建的是KeyWordFilter.java,具体实现代码ruxi

package com.boot.tool;

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @author YangJie
 * @Description:屏蔽词工具类
 * @Date:Created in 10:29 2018/2/2
 * @Modified By:
 */
public class KeyWordFilter {

  private static Pattern pattern = null;

  /**
   * 从words.properties初始化正则表达式字符串
   */
  private static void initPattern() {
    StringBuffer patternBuf = new StringBuffer("");
    try {
      InputStream in = KeyWordFilter.class.getClassLoader().getResourceAsStream("words.properties");
      Properties pro = new Properties();
      pro.load(in);
      Enumeration enu = pro.propertyNames();
      patternBuf.append("(");
      while (enu.hasMoreElements()) {
        patternBuf.append((String) enu.nextElement() + "|");
      }
      patternBuf.deleteCharAt(patternBuf.length() - 1);
      patternBuf.append(")");

      //unix换成UTF-8
      //pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"));
      //win下换成gb2312
      pattern = Pattern.compile(new String(patternBuf.toString().getBytes("ISO-8859-1"), "gb2312"));
    } catch (IOException ioEx) {
      ioEx.printStackTrace();
    }
  }

  /**
   * 屏蔽词取代
   */
  private static String doFilter(String str) {
    Matcher m = pattern.matcher(str);
    //匹配到的词用 ** 代替
    str = m.replaceAll("****");
    return str;
  }

  /**
   * main方法的测试
   */
  public static void main(String[] args) {
    String str = "黄色电影强奸,中国人民,你们都是大傻逼,只知道看小电影,色诱";
    System.out.println("str:" + str);
    initPattern();
    Date d1 = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss:SSS Z");
    System.out.println("start:" + formatter.format(d1));
    System.out.println("共" + str.length() + "个字符,查到" + KeyWordFilter.doFilter(str));
    Date d2 = new Date();
    System.out.println("end:" + formatter.format(d2));

  }

}

猜你喜欢

转载自blog.csdn.net/qq_36229817/article/details/79236427