您的位置:首页 > 编程语言 > C#

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;
}
//该代码片段来自于:http://www.sharejs.com/codes/csharp/5486
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: