方法一:
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));//替换脏字为***
}
}