• C# 玩家昵称屏蔽敏感字眼


    功能:使用正则  对玩家昵称处理,如果含有 屏蔽字库里的敏感字眼进行屏蔽。已封装成dll

    1.屏蔽字库处理成所需要的正则格式:(所需正则表达式格式:".*((XX)|(XX)|(XX)|....).*")

    2.FilterHelper类中:

    public sealed class FilterHelper
        {
            private Regex r;
    
            #region Singleton
            private static readonly FilterHelper instance = new FilterHelper();
            public static FilterHelper Instance { get { return instance; } }
            private FilterHelper() { }
            #endregion
    
            private void ReadRex()
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                string textFile = path + "FilterSt.txt";
                FileStream fs;
                if (File.Exists(textFile))
                {
                    fs = new FileStream(textFile, FileMode.Open, FileAccess.Read);
                    using (fs)
                    {
                        ////TextRange text = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd);
                        //text.Load(fs, DataFormats.Text);
    
                        //创建一个容量4M的数组
                        byte[] byteData = new byte[fs.Length];
                        //从文件中读取数据写入到数组中(数组对象,从第几个开始读,读多少个)
                        //返回读取的文件内容真实字节数
                        int length = fs.Read(byteData, 0, byteData.Length);
                        //如果字节数大于0,则转码
                        if (length > 0)
                        {
                            //将数组转以UTF-8字符集编码格式的字符串
                            var filterst = ".*(" + Encoding.UTF8.GetString(byteData) + ").*";
                            r=new Regex(@filterst);
                        }
    
                    }
                }
                else
                {
                    throw new FileNotFoundException("找不到屏蔽字库");
                }
            }
    
            /// <summary>
            /// 判断是否屏蔽
            /// </summary>
            /// <param name="input"></param>
            /// <returns></returns>
            public bool IsStFilter(string input)
            {
                if (string.IsNullOrEmpty(input))
                {
                    throw new Exception("输入不能为空");
                }
                if (r == null)
                {
                    ReadRex();
                }
    
                if (r.IsMatch(input))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    View Code

    3.需要判断是否屏蔽的地方:直接调用FilterHelper.Instance.IsStFilter(判断的昵称)

    备注:1、dll中只能包含代码,资源文件必须复制到对应的输出路径。

       2、屏蔽字库的txt要复制到项目的输出路径,也就是 AppDomain.CurrentDomain.BaseDirectory说对应的路径。

    Demo连接:http://download.csdn.net/detail/ofat___lin/7615715

  • 相关阅读:
    Sensor Fusion-based Exploration in Home Environments using Information, Driving and Localization Gains(基于传感器融合的使用信息、驾驶和定位增益在家庭环境中的探索)
    Git中从远程的分支获取最新的版本到本地
    git拉取远程分支到本地分支或者创建本地新分支
    win7下使用git
    ADAS

    struct对齐
    STL容器
    智能指针
    c++中的基本知识点
  • 原文地址:https://www.cnblogs.com/fatlin/p/3835402.html
Copyright © 2020-2023  润新知