C#敏感关键词过滤代码
2015-08-14 17:11
417 查看
System.Text.StringBuildersb= new System.Text.StringBuilder(text.Length); |
string filterText= "需要过滤的脏字以|分开" ; //脏字可根据自己的方式用分隔符 |
string []filterData=filterText.Split( '|' ); |
foreach (varitem in filterData) |
{ |
char value=item[0]; |
if (dicList.ContainsKey(value)) |
dicList[value].Add(item); |
else |
dicList.Add(value, new List< string >(){item}); |
} |
int count=text.Length; |
for ( int i=0;i<count;i++) |
{ |
char word=text[i]; |
if (dicList.ContainsKey(word)) //如果在字典表中存在这个key |
{ |
int num=0; //是否找到匹配的关键字1找到0未找到 |
vardata=dicList[word].OrderBy(g=>g.Length); //把该key的字典集合按字符数排序(方便下面从少往多截取字符串查找) |
foreach (varwordbook in data) |
{ |
if (i+wordbook.Length<=count) //如果需截取的字符串的索引小于总长度则执行截取 |
{ |
string result=text.Substring(i,wordbook.Length); //根据关键字长度往后截取相同的字符数进行比较 |
if (result==wordbook) |
{ |
num=1; |
sb.Append(GetString(result)); |
i=i+wordbook.Length-1; //比较成功同时改变i的索引 |
break ; |
} |
} |
} |
if (num==0) |
sb.Append(word); |
} |
else |
sb.Append(word); |
} |
return sb.ToString(); |
} |
///<summary> |
///替换星号 |
///</summary> |
///<paramname="value"></param> |
///<returns></returns> |
private static string GetString( string value) |
{ |
string starNum= string .Empty; |
for ( int i=0;i<value.Length;i++) |
{ |
starNum+= "*" ; |
} |
return starNum; |
} |
//该代码片段来自于: |
相关文章推荐
- C#整理
- C# in depth (第六章 实现迭代器的捷径)
- C# 语言和 .NET Framework 介绍
- C#关于log4net(Log For Net)
- c#异步调用和回调
- c# EmguCv定位二维码
- C#基数样条曲线的模拟实现(对应Graphics的DrawCurve)
- C# WinForm判断Win7下是否是管理员身份运行
- C#使用 System.Net.Mail发送邮件功能
- C#实现基于XML配置MenuStrip菜单的方法
- C#实现自定义Dictionary类实例
- C# 数字转ASCII码
- C#在VS2013中类型图标
- 一个空循环的问题
- c#语法糖代码——继承中构造函数的问题,this&base比较
- C#实现将数组内元素打乱顺序的方法
- C#基础——Func和Action的介绍及其用法
- 编写高质量代码改善C#程序的157个建议——建议21:选择正确的集合
- C#中Image , Bitmap 和 BitmapData
- .net 中,使用c# 语言 ,执行exe程序。