收藏本站 
广告服务 
网站地图 
>> 本频道近100000余篇各类电脑技术、网络技术、软件技术、网页及平面设计等方面的电脑教程,我们的原则:不是精华拒不收录!
先飞电脑技术网技术文章网络编程ASP.Net
网络编程 | 网站建设 | 网络技术 | 设计教程 | 软件教学 | 程序开发 | 数据库开发 | 教育认证 | 硬件维护 | 媒体动画 | 机械电子 |

关于ASP.NET脏字过滤的算法代码

[ 作者:佚名    转贴自:网络转载    阅读次数:79    更新时间:2007-9-28 10:57:00   录入:刘光勇 ]         
    关于.NET脏字过滤的算法代码。我这里测试的时候,RegEx要快一倍左右。但是还是不太满意,应为我们网站上脏字过滤用的相当多,对效率已经有了一些影响,经过一番思考后,自己做了一个算法。在自己的机器上测试了一下,使用原文中的脏字库,0x19c的字符串长度,1000次循环,文本查找耗时1933.47ms,RegEx用了1216.719ms,而我的算法只用了244.125ms.

  主要算法如代码所示

以下是引用片段:
  private static Dictionary dic = new Dictionary();
  private static BitArray fastcheck = new BitArray(char.MaxValue);
  static void Prepare()
  {
  string[] badwords = // read from file
  foreach (string word in badwords)
  {
  if (!dic.ContainsKey(word))
  {
  dic.Add(word, null);
  maxlength = Math.Max(maxlength, word.Length);
  int value = word[0];
  fastcheck[word[0]] = true;
  }
  }
  }

  使用的时候
以下是引用片段:
  int index = 0;
  while (index < target.Length)
  {
  if (!fastcheck[target[index]])
  {
  while (index < target.Length - 1 && !fastcheck[target[++index]]) ;
  }
  for (int j = 0; j < Math.Min(maxlength, target.Length - index); j++)
  {
  string sub = target.Substring(index, j);
  if (dic.ContainsKey(sub))
  {
  sb.Replace(sub, "***", index, j);
  index += j;
  break;
  }
  }
  index++;
  }

  我们在遇到问题的时候不要一味地去借用别人的代码,有时候动动脑筋说不定有意外的惊喜!
文章首页【加入到收藏夹】告诉好友】【打印此文】【关闭窗口
  版权声明:本站提供的“关于ASP.NET脏字过滤的算法代码”版权归文章所有者,转载请注明出处!
 ·上一篇文章:ASP.NET2.0中GridView控件的隐藏列的问题      ·下一篇文章:Asp.Net2.0数据库基本操作方法
相关文章
·关于在RGB色彩空间中的基础知识[22]
·关于ASP.NET脏字过滤的算法代码[79]
·关于C#在lucene.net下的中文切词[73]
·综合布线施工过程中关于放线问题[75]
·Java中关于对Cookie的操作小技巧[76]
网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号 先飞电脑教程网