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;
            }
        }
    }

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

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

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

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

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

时间: 2024-11-05 23:36:06

C# 玩家昵称屏蔽敏感字眼的相关文章

萌新笔记——用KMP算法与词典实现屏蔽敏感词(UTF-8编码)

前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"***"就可以了.对于子串的查找,就KMP算法就可以了.但是敏感词这么多,总不能一个一个地遍历看看里面有没有相应的词吧! 于是我想到了前几天写的字典树.如果把它改造一下,并KMP算法结合,似乎可以节约不少时间. 首先说明一下思路: 对于KMP算法,这里不过多阐述.对于敏感词库,如果把它存进字典树,并在

JS采用ActiveXObject实现用户在提交表单时屏蔽敏感词的功能

本例中敏感词ciku.txt放在C盘根目录下,采用的ActiveXObject插件获取本地文件内容.使用此插件不需网上下插件,直接用如下js代码即可. 浏览器需修改interner安全选项的级别,启用ActiveX才能获取到代码中的ActiveXObject插件.如下图所示: js代码实现如下: 1 <script type="text/javascript"> 2 // -------------- 全局变量,用来判断文本域中是否包含脏词,默认为false,即不包含脏词-

Java 利用DFA算法 屏蔽敏感词

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * 初始化敏感词库<br> * 将敏感词加入到HashMap中

域名被微信屏蔽了怎么办?微信域名防封技术

近来域名防封技术已经被众多商家重视了,原因很简单,推广过程中经常遇到域名被微信封的情况,导致推广损失巨大.那么针对微信防封这块,相信大部分朋友已经对防封这方面有了一定的了解.我一直在研究防封这块也有几年时间了,所以在技术方面也在一直向更深层次的方向做研究,今天来分享下最近时间的研究成果. 域名被拦截的主要因素 域名被社交软件拦截或者被屏蔽是推广过程中经常会碰到的情况,那么网站域名在微信被拦截主要原因有哪些呢. 1.被举报,如客户有情绪,会恶意投诉到腾讯2.网站有敏感词或违规内容,比如钓鱼,虚假,

微信和QQ内置浏览器为什么老是弹停止访问该网页,微信域名被屏蔽的解决办法

近来很多商家开始重视域名防封的技术了,为什么呢,因为实在是封怕了.三天两头就得去换域名,换域名是小事,用户流失就是大事了,直接跟利益挂钩的.那么域名防封技术究竟有多重要呢?又该如何实现域名防封呢?下面给大家分享一些自己的经验. 案例分析 首先我们来说一下域名的重要性,在百度统计“流量入口选择”一项中,2016年12月1日到2017年5月31日共6个月的数据统计结果显示: 通过域名直接访问域名的用户是43.37% 通过搜索引擎的是27.75% 通过其他外链的是27.44% 通过导航网站的是0.99

ecshop——商城禁止注册敏感词

这个是为了防止一些敏感字眼出现在商城会员中,实现如下: 一.执行sql语句: INSERT INTO `{$prefix}shop_config` (`id`, `parent_id`, `code`, `type`, `store_range`, `store_dir`, `value`, `sort_order`) VALUES (10, 0, 'sensitive', 'group', '', '', '', 1), (1001, 10, 'reg_sensitive', 'textare

敏感词过滤

敏感词过滤是很多网站.论坛常用的功能,一下为相关文章: 1.关于java中敏感词检测的一些总结 2.Java 利用DFA算法 屏蔽敏感词 3.Java实现敏感词过滤--DFA算法

敏感词汇过滤(不区分大小写)

最近项目中,用户评论内容需要屏蔽敏感词汇,从网上总结以下方法,(不区分大小写,如想设置大小写敏感,可以把代码中content..toLowerCase()去掉).具体看代码: 1.读取敏感词汇文档 <span style="font-size:18px;">package com.blemall.wizlife.util.sensitive; import java.io.BufferedReader; import java.io.File; import java.io

微信域名防封技术,微信分享链接总是被屏蔽要怎么解决

但凡想使用微信来推广产品或者从事活动营销的用户,就一定会遇到域名被微信拦截甚至封杀的情况.域名没被封过,那你的营销人生肯定是不完整的.如何做到微信域名防封呢?这就要借助一些技术手段来实现有效的防封措施了. 域名被封的原因 1. 域名来源,在微信有过黑历史,被人使用过在微信有过不良记录,后来被人为各种方法恢复后转到你手上,这种域名很容易被封. 2. 域名分享量太大,触碰上限导致. 3. 网站有敏感词或违规内容,比如钓鱼,虚假,违法,色情,夸大疗效等敏感字眼,网络蜘蛛会将这些词提交到服务器进行比对筛