|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。数据|成绩|正则办法一:利用正则表达式
1//脏字典数据寄存文件路径
2privatestaticstringFILE_NAME="zang.txt";
3//脏数据字典表,如:脏数据一|脏数据二|脏数据三
4publicstaticstringdirtyStr="";
5
6publicValidDirty()
7{
8if(HttpRuntime.Cache["Regex"]==null)
9{
10dirtyStr=ReadDic();
11//用于检测脏字典的正则表达式
12RegexvalidateReg=newRegex("^((?!"+dirtyStr+").(?<!"+dirtyStr+"))*$",RegexOptions.Compiled|RegexOptions.ExplicitCapture);
13HttpRuntime.Cache.Insert("Regex",validateReg,null,DateTime.Now.AddMinutes(20),TimeSpan.Zero);
14}
15
16}
17privatestringReadDic()
18{
19FILE_NAME=Environment.CurrentDirectory+""+FILE_NAME;
20
21if(!File.Exists(FILE_NAME))
22{
23Console.WriteLine("{0}doesnotexist.",FILE_NAME);
24return"";
25}
26StreamReadersr=File.OpenText(FILE_NAME);
27Stringinput="";
28while(sr.Peek()>-1)
29{
30input+=sr.ReadLine();
31}
32
33sr.Close();
34returninput;
35
36}
37
38
39publicboolValidByReg(stringstr)
40{
41Regexreg=(Regex)HttpRuntime.Cache["Regex"];
42returnreg.IsMatch(str);
43
44}
感到这类办法的实行效力不是很高,复杂的测试了一下1000字的文章,脏字典有800多个关头字
式了一下是1.238秒,人人有无更好的办法,请不惜见教!
办法二:一般轮回查找办法
publicboolValidGeneral(stringstr)
{
if(!File.Exists(FILE_NAME))
{
Console.WriteLine("文件路径大概文件路径不存在毛病信息");
returnfalse;
}
else
{
StreamReaderobjReader=newStreamReader(FILE_NAME,System.Text.Encoding.GetEncoding("gb2312"));
stringsLine="";
ArrayListarrText=newArrayList();
while(sLine!=null)
{
sLine=objReader.ReadLine();
if(sLine!=null)
arrText.Add(sLine);
}
objReader.Close();
foreach(stringsOutputinarrText)
{
string[]strArr=sOutput.Split(|);
for(inti=0;i<strArr.Length;i++)
{
if(str.IndexOf(strArr)!=-1)
{
returnfalse;
}
}
}
returntrue;
}
}
以下是测试的办法,有甚么成绩还人人请指出!
1DateTimet1=DateTime.Now;
2stringstr="213";
3str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
4str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
5str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
6str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
7str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
8str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
9str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
10str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
11str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
12str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
13str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
14str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
15str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
16str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
17str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
18str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
19str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
20str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
21str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
22str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
23str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
24str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
25str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
26str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
27str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
28str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
29str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
30str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
31str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
32str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
33str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
34str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
35str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
36str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
37str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
38str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
39str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
40str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
41str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
42str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
43str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
44str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
45str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
46str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
47str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
48str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
49str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
50str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
51str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
52str+="爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋爱惜水晶之恋";
53ValidDirtyvd=newValidDirty();
54Console.WriteLine(vd.ValidByReg(str));
55DateTimet2=DateTime.Now;
56TimeSpants=t2-t1;
57Console.WriteLine(ts.TotalMilliseconds);
58Console.Read();
10个汉字/980
100个汉字/999
1000个汉字/1234
10个汉字/234
100个汉字/234
1000个汉字/265
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。 |
|