C\#민감 어 여과 실현 방법

2242 단어 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\#프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기