熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

關於.NET髒字過濾的算法代碼

2013-11-13 11:01:53  來源: .NET編程 

  關於NET髒字過濾的算法代碼我這裡測試的時候RegEx要快一倍左右但是還是不太滿意應為我們網站上髒字過濾用的相當多對效率已經有了一些影響經過一番思考後自己做了一個算法在自己的機器上測試了一下使用原文中的髒字庫xc的字符串長度次循環文本查找耗時msRegEx用了ms而我的算法只用了ms

  主要算法如代碼所示

以下是引用片段
  private static Dictionary dic = new Dictionary();
  private static BitArray fastcheck = new BitArray(charMaxValue);
  static void Prepare()
  {
  string[] badwords = // read from file
  foreach (string word in badwords)
  {
  if (!dicContainsKey(word))
  {
  dicAdd(word null);
  maxlength = MathMax(maxlength wordLength);
  int value = word[];
  fastcheck[word[]] = true;
  }
  }
  }

  使用的時候 以下是引用片段
  int index = ;
  while (index < targetLength)
  {
  if (!fastcheck[target[index]])
  {
  while (index < targetLength   && !fastcheck[target[++index]]) ;
  }
  for (int j = ; j < MathMin(maxlength targetLength  index); j++)
  {
  string sub = targetSubstring(index j);
  if (dicContainsKey(sub))
  {
  sbReplace(sub *** index j);
  index += j;
  break;
  }
  }
  index++;
  }

  我們在遇到問題的時候不要一味地去借用別人的代碼有時候動動腦筋說不定有意外的驚喜!
From:http://tw.wingwit.com/Article/program/net/201311/15026.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.