ASP 通过正则表达式过滤敏感词

89 篇文章 0 订阅


        /// <summary>
        /// 判断用户的评论中是否有禁用词
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool CheckForbid(string msg)
        {
            List<string> list = dal.GetForbidWord();//获取所有的禁用词 (也可以放入缓存中)。
            string regex = string.Join("|",list.ToArray());   //aa|bb|cc|dd   正好拼接成正则表达式字符串
            return Regex.IsMatch(msg, regex);   //通过正则表达式判断是否包含禁用词。
            //foreach (string word in list)
            //{
            //    msg.Contains(word);   //Contains函数内部也是一个循环,所以时间复杂度高,不建议使用foreach函数,而是使用正则表达式。
            //    break;
            //}

        }
        /// <summary>
        /// 审查词过滤
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool CheckMod(string msg)
        {

            List<string> list = dal.GetModWord();//获取所有的审查词 (也可以放入缓存中)。
            string regex = string.Join("|", list.ToArray());  //aa|bb|cc|dd
            regex = regex.Replace(@"\", @"\\").Replace("{2}",@".{0,2}");  //replace对正则表达式字符串作进一步处理。{0,2}表示0到2个字符。
            return Regex.IsMatch(msg, regex);
        }
        /// <summary>
        /// 替换词过滤
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public string CheckReplace(string msg)
        {
            List<Model.Articel_Words> list = dal.GetReplaceWord();  //(可以放入缓存中)
            foreach (Model.Articel_Words model in list)
            {
                msg = msg.Replace(model.WordPattern, model.ReplaceWord);  //将敏感词替换成对应词。
            }
            return msg;
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值