时间:2016-02-24 19:01 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【脏字典过滤:用正则表达式来过滤脏数据】,下面是详细的分享!
脏字典过滤:用正则表达式来过滤脏数据
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 }
方法二:普通循环查找方法
| 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() ; |
算法
检索文本文件长度 / 耗费时间(ms)
正则算法
10个汉字/ 980
100个汉字/999
1000个汉字/1234
普通算法
10个汉字/ 234
100个汉字/234
1000个汉字/265
以上所分享的是关于脏字典过滤:用正则表达式来过滤脏数据,下面是编辑为你推荐的有价值的用户互动:
相关问题:正则表达式过滤特殊字符
答:正则表达式里面你带了逗号,应该这样写 [。~!@#$%\^\+\*&\\\/\?\|:\.{}()';="] 有些符号只有少数几个符号需要转义,而且不用打逗号,打了逗号就相当于把逗号也过滤掉了 >>详细
相关问题:正则表达式过滤html标签和标签中的注释
答:using System; // 不过仔细看,我这个也没错啊... // MyRule=@"abcdef” } } >>详细
相关问题:如何用正则表达式提取网页源码中内容,一定要过滤h...
答:将]*> 换为""就OK了 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
