脏字过滤

   方法一:

  using System.IO; 


      //脏字典数据存放文件路径

private static string FILE_NAME="zang.txt";  

 

 public bool ValidGeneral(string str)
        {       

            if(!File.Exists(FILE_NAME))
            {
                Console.WriteLine("文件路径或者文件路径不存在错误信息") ;
                return false;
            }
            else
            {
                StreamReader objReader = new StreamReader(FILE_NAME,System.Text.Encoding.GetEncoding("gb2312"));
                string sLine="";
                ArrayList arrText = new ArrayList();

                while (sLine != null)
                {
                    sLine = objReader.ReadLine();
                    if (sLine != null)
                        arrText.Add(sLine);                   
                }
                objReader.Close();

                foreach (string sOutput in arrText)
                {
                    string[] strArr=sOutput.Split('|');
                   
                    for (int i = 0; i < strArr.Length; i++)
                    {
                        if (str.IndexOf(strArr[i])!=-1)
                        {
                            return false;   
                        }                       
                    }                   
                }
                return true;
            }
        }

 

调用:
            str = "珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍SB惜水晶之恋";
            ValidDirty vd=new ValidDirty() ;
            Console.WriteLine(vd.ValidByReg(str))  ;
            DateTime t2 =DateTime.Now;
            TimeSpan ts=t2-t1;
            Console.WriteLine(ts.TotalMilliseconds) ;
            Console.Read() ;

 

==========================================

方法二:

         //脏字典数据存放文件路径
         private static string FILE_NAME="zang.txt";
         //脏数据字典表,如:脏数据一|脏数据二|脏数据三
         public static string dirtyStr="";
       
         public ValidDirty()
         {
             if (HttpRuntime.Cache["Regex"]==null)
             {
                dirtyStr=ReadDic();
                //用于检测脏字典的正则表达式
                Regex validateReg= new Regex("^((?!"+dirtyStr+").(?<!"+dirtyStr+"))*$",RegexOptions.Compiled|RegexOptions.ExplicitCapture);   
                HttpRuntime.Cache.Insert("Regex" ,validateReg,null,DateTime.Now.AddMinutes(20) ,TimeSpan.Zero);
            }           
        }


        private string ReadDic()
        {
            FILE_NAME=Environment.CurrentDirectory+"//"+FILE_NAME;

            if (!File.Exists(FILE_NAME))
            {
                Console.WriteLine("{0} does not exist.", FILE_NAME);
                return "";
            }
            StreamReader sr = File.OpenText(FILE_NAME);
            String input="";
            while (sr.Peek() > -1)
            {
                input += sr.ReadLine() ;
            }
            sr.Close();
            return input;
        }
       
        public bool ValidByReg(string str)
        {
            Regex reg=(Regex)HttpRuntime.Cache["Regex"];
            return reg.IsMatch(str) ;           
        }

 

==========================================================================

方法三:
方法类[Class1.cs]:
    using System.IO;

    // 读取文件
    public static string WriteFile(string fielpath)
    {
        StreamReader rd = new StreamReader(fielpath, System.Text.Encoding.GetEncoding("gb2312"));
        string content = rd.ReadToEnd().ToString();
        rd.Close();
        return content;
    }

    // 过滤脏字
    public static string Filtrate(string content, string path)//, string path
    {
        string key = WriteFile(path);
        string[] a = key.Split('|');
        for (int i = 0; i < a.Length; i++)
        {
            content = content.Replace(a[i], "***");
        }
        return content;
    }

 

调用方法(替换脏字)[default.aspx.cs]:
    using System.IO;

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (this.TextBox1.Text.Trim() != "")
        {
            string path = Server.MapPath("zang.txt");//脏字典路径
            Response.Write(Class1.Filtrate(this.TextBox1.Text, path));//替换脏字为***
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值