方法一:使用正则表达式
1//脏字典数据存放文件路径
2 chaîne statique privée FILE_NAME="zang.txt";
3 //脏数据字典表,如:脏数据一|脏数据二|脏数据三
4 chaîne statique publique dirtyStr="";
5
6 public ValidDirty()
7 {
8 si (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 chaîne privée ReadDic()
18 {
19 FILE_NAME=Environnement.CurrentDirectory+" \"+FILE_NAME ;
20
21 si (!File.Exists(FILE_NAME))
22 {
23 Console.WriteLine("{0} n'existe pas.", FILE_NAME);
24 retour "" ;
25 }
26 StreamReader sr = Fichier.OpenText(FILE_NAME);
27 Chaîne d'entrée="";
28 tandis que (sr.Peek() > -1)
29 {
30 entrée += sr.ReadLine() ;
31 }
32
33 sr.Close();
34 entrées de retour ;
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 }
Il s'agit d'une version 1.238, d'une version 1.238 et d'une version 1.238.
Nom de l'utilisateur :
public bool ValidGeneral(string str)
{
if(!File.Exists(FILE_NAME))
{
Console.WriteLine("文件路径或者文件路径不存在错误信息") ;
renvoie faux ;
}
autre
{
StreamReader objReader = new StreamReader(FILE_NAME,System.Text.Encoding.GetEncoding("gb2312"));
chaîne sLine="";
ArrayList arrText = new ArrayList();
tandis que (sLine != null)
{
sLine = objReader.ReadLine();
si (sLine != null)
arrText.Add(sLine);
}
objReader.Close();
foreach (chaîne sOutput dans arrText)
{
string[] strArr=sOutput.Split('|');
pour (int i = 0; i < strArr.Length; i++)
{
si (str.IndexOf(strArr[i])!=-1)
{
renvoie faux ;
}
}
}
renvoie vrai ;
}
}
以下是测试的方法,有什么问题还大家请指出!
1DateTime t1 =DateTime.Now;
2 chaîne 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=nouveau ValidDirty() ;
54 Console.WriteLine(vd.ValidByReg(str)) ;
55 DateTime t2 =DateTime.Maintenant ;
56 Durée ts=t2-t1;
57 Console.WriteLine(ts.TotalMilliseconds) ;
58 Console.Read()
; |
检索文本文件长度/ 耗费时间( ms ) |
正则算法 |
10 汉 字/ 980 |
100 $ /999 |
1 000 yuans /1 234 |
普通算法 |
10 juillet / 234 |
100 汉 字/234 |
1000 $ /265 |
脏字典下载