当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  关于脏字典过滤问题-用正则表达式来过滤脏数据 关于脏字典过滤问题-用正则表达式来过滤脏数据

 关于脏字典过滤问题-用正则表达式来过滤脏数据 关于脏字典过滤问题-用正则表达式来过滤脏数据

点击次数:16 次 发布日期:2008-11-26 12:36:04 作者:源代码网
源代码网推荐      方法一:使用正则表达式
源代码网推荐  
源代码网推荐   1//脏字典数据存放文件路径
源代码网推荐   2 private static string FILE_NAME="zang.txt";
源代码网推荐   3 //脏数据字典表,如:脏数据一|脏数据二|脏数据三
源代码网推荐   4 public static string dirtyStr="";
源代码网推荐   5
源代码网推荐   6 public ValidDirty()
源代码网推荐   7 {
源代码网推荐   8 if (HttpRuntime.Cache["Regex"]==null)
源代码网推荐   9 {
源代码网推荐  10 dirtyStr=ReadDic();
源代码网推荐  11 //用于检测脏字典的正则表达式
源代码网推荐  12 Regex validateReg= new Regex("^((?!"+dirtyStr+").(?<!"+dirtyStr+"))*$",RegexOptions.Compiled|RegexOptions.ExplicitCapture);
源代码网推荐  13 HttpRuntime.Cache.Insert("Regex" ,validateReg,null,DateTime.Now.AddMinutes(20) ,TimeSpan.Zero);
源代码网推荐  14 }
源代码网推荐  15
源代码网推荐  16 }
源代码网推荐  17 private string ReadDic()
源代码网推荐  18 {
源代码网推荐  19 FILE_NAME=Environment.CurrentDirectory+"\"+FILE_NAME;
源代码网推荐  20
源代码网推荐  21 if (!File.Exists(FILE_NAME))
源代码网推荐  22 {
源代码网推荐  23 Console.WriteLine("{0} does not exist.", FILE_NAME);
源代码网推荐  24 return "";
源代码网推荐  25 }
源代码网推荐  26 StreamReader sr = File.OpenText(FILE_NAME);
源代码网推荐  27 String input="";
源代码网推荐  28 while (sr.Peek() > -1)
源代码网推荐  29 {
源代码网推荐  30 input += sr.ReadLine() ;
源代码网推荐  31 }
源代码网推荐  32
源代码网推荐  33 sr.Close();
源代码网推荐  34 return input;
源代码网推荐  35
源代码网推荐  36 }
源代码网推荐  37
源代码网推荐  38
源代码网推荐  39 public bool ValidByReg(string str)
源代码网推荐  40 {
源代码网推荐  41 Regex reg=(Regex)HttpRuntime.Cache["Regex"];
源代码网推荐  42 return reg.IsMatch(str) ;
源代码网推荐  43
源代码网推荐  44 }
源代码网推荐  
源代码网推荐  感觉这种方法的执行效率不是很高,简单的测试了一下 1000字的文章,脏字典有800多个关键字
源代码网推荐  式了一下是 1.238秒,大家有没有更好的方法,请不吝赐教!
源代码网推荐  
源代码网推荐  方法二:普通循环查找方法
源代码网推荐  
源代码网推荐   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;
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  以下是测试的方法,有什么问题还大家请指出!
源代码网推荐  
源代码网推荐   1DateTime t1 =DateTime.Now;
源代码网推荐   2 string str="213";
源代码网推荐   3 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐   4 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐   5 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐   6 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐   7 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐   8 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐   9 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  10 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  11 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  12 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  13 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  14 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  15 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  16 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  17 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  18 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  19 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  20 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  21 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  22 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  23 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  24 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  25 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  26 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  27 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  28 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  29 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  30 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  31 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  32 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  33 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  34 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  35 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  36 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  37 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  38 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  39 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  40 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  41 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  42 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  43 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  44 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  45 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  46 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  47 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  48 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  49 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  50 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  51 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  52 str+="珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋珍惜水晶之恋";
源代码网推荐  53 ValidDirty vd=new ValidDirty() ;
源代码网推荐  54 Console.WriteLine(vd.ValidByReg(str)) ;
源代码网推荐  55 DateTime t2 =DateTime.Now;
源代码网推荐  56 TimeSpan ts=t2-t1;
源代码网推荐  57 Console.WriteLine(ts.TotalMilliseconds) ;
源代码网推荐  58 Console.Read() ;
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华