C#敏感词汇过滤(不是正则)
生活随笔
收集整理的這篇文章主要介紹了
C#敏感词汇过滤(不是正则)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length);
? string filterText = "需要過濾的臟字 以|分開" ;
? //臟字 可根據(jù)自己的方式用分隔符
? string [] filterData = filterText.Split( '|' );
? foreach (var item 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; //是否找到匹配的關(guān)鍵字 1找到0未找到
??? var data = dicList[word].OrderBy(g => g.Length);
??? //把該key的字典集合按 字符數(shù)排序(方便下面從少往多截取字符串查找)
??? foreach (var wordbook in data)
??? {
???? if (i + wordbook.Length <= count)
???? //如果需截取的字符串的索引小于總長度 則執(zhí)行截取
???? {
????? string result = text.Substring(i, wordbook.Length);
????? //根據(jù)關(guān)鍵字長度往后截取相同的字符數(shù)進(jìn)行比較
????? 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>
/// <param name="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;
}
總結(jié)
以上是生活随笔為你收集整理的C#敏感词汇过滤(不是正则)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信消息推送神器【一封传话】介绍,让消息
- 下一篇: 365 水壶问题(递归、数学-裴蜀定理)