zoukankan      html  css  js  c++  java
  • 关键字加链接

    private static readonly Regex reg_b = new Regex(@"\B", RegexOptions.Compiled);
    private static readonly Regex reg_en = new Regex(@"[a-zA-Z]+", RegexOptions.Compiled);
    private static readonly Regex reg_num = new Regex(@"^[\-\.\s\d]+$", RegexOptions.Compiled);
     
    private static Regex reg_word = null//组合所有屏蔽词的正则
     
    private static Regex GetRegex()
    {
        if (reg_word == null)
        {
            reg_word = new Regex(GetPattern(), RegexOptions.Compiled | RegexOptions.IgnoreCase);
        }
        return reg_word;
    }
     
    /// <summary>
    /// 检查输入内容是否包含脏词(包含返回true)
    /// </summary>
    public static bool HasBlockWords(string raw)
    {
        return GetRegex().Match(raw).Success;
    }
    /// <summary>
    /// 脏词替换成*号
    /// </summary>
    public static string WordsFilter(string raw)
    {
        return GetRegex().Replace(raw, "***");
    }
    /// <summary>
    /// 获取内容中含有的脏词
    /// </summary>
    public static IEnumerable<string> GetBlockWords(string raw)
    {
        foreach (Match mat in reg_word.Matches(raw))
        {
            yield return (mat.Value);
        }
    }
    private static string GetPattern()
    {
        StringBuilder patt = new StringBuilder();
        string s;
        foreach (string word in GetBlockWords())
        {
            if (word.Length == 0continue;
            if (word.Length == 1)
            {
                patt.AppendFormat("|({0})", word);
            }
            else if (reg_num.IsMatch(word))
            {
                patt.AppendFormat("|({0})", word);
            }
            else if (reg_en.IsMatch(word))
            {
                s = reg_b.Replace(word, @"(?:[^a-zA-Z]{0,3})");
                patt.AppendFormat("|({0})", s);
            }
            else
            {
                s = reg_b.Replace(word, @"(?:[^\u4e00-\u9fa5]{0,3})");
                patt.AppendFormat("|({0})", s);
            }
        }
        if (patt.Length > 0)
        {
            patt.Remove(01);
        }
        return patt.ToString();
    }
     
    /// <summary>
    /// 获取所有脏词
    /// </summary>
    public static string[] GetBlockWords()
    {
        return new string[]{"国民党","fuck","110"};//这里应该从数据库获取
    }
  • 相关阅读:
    4.再来看看逆向——OD的简介
    3.资源里加个混淆
    反编译python打包的exe文件
    2.释放资源那些事
    1.恶意软件中的防双开
    windbg源码驱动调试 + 无源码驱动调试
    [转]当勒索病毒“不图财”时会图什么?
    勒索病毒加密过程分析1——简易加密型(坏兔子病毒)
    通过驱动杀死那个进程
    前端学习笔记 day14 模拟滚动条
  • 原文地址:https://www.cnblogs.com/bober/p/2726759.html
Copyright © 2011-2022 走看看