程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#敏感詞過濾完成辦法

C#敏感詞過濾完成辦法

編輯:C#入門知識

C#敏感詞過濾完成辦法。本站提示廣大學習愛好者:(C#敏感詞過濾完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#敏感詞過濾完成辦法正文


本文實例講述了C#敏感詞過濾完成辦法。分享給年夜家供年夜家參考。詳細以下:

這兩天忽然想到了敏感詞過濾 就聯合網上找到的材料本身寫了一個,髒字數目700+(效力不是很高 測試在110多KB的情形下比replace快 3-4倍)
測試成果圖 單元:秒

代碼以下:

System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length);
 string filterText = "須要過濾的髒字 以|離開";
 //髒字 可依據本身的方法用分隔符
 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;//能否找到婚配的症結字 1找到0未找到
   var data = dicList[word].OrderBy(g => g.Length);
   //把該key的字典聚集按 字符數排序(便利上面從少往多截取字符串查找)
   foreach (var wordbook 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>
/// <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;
}

還有待優化的處所

列位有更好的辦法還請分享指導一下,解釋道理

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved