易截截图软件、单文件、免安装、纯绿色、仅160KB

asp.net关键字过滤

因为过滤关键字机制到处可见,于是聪明的网友就会想到各种各样的方法突破,例如:
  1、中文会用繁体字的方法避开关键字扫描
  2、在关键字中间插入无意思的特殊字符,例如 * & # @ 等,而且个数可变
  3、使用谐音或拆字法变换关键字
  在实现自己的算法时也有些问题:
  4、随着时间推移,关键字列表会越来越大,有些论坛常用的正则表达式N次扫描的方法显得效率很低。
  5、关键字有不同的严重级别,有些需要禁止,有些只需要替换,还有一些可能记录一下即可。
  针对这些问题,可采用的应对方法:
  1、加载关键字列表时,将所有的关键字转换成繁体字一份,以扫描繁体版的关键字;
  这个转换工作只需一句就可以实现了:
  s=Microsoft.VisualBasic.Strings.StrConv(word, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0);
  2、在扫描原文本时,如果遇到关键字的首个文字,忽略其后的特殊字符,直到下一个有意义的文字为止,当然这里需要在定义关键字列表时指定哪些才需要这样扫描,并不是所有关键字都采用这种方式;
  例如有关键字 “你好”经常会被人输入成“你x好”或者“你xxxxx好”,那么在关键字列表里就需要定义成“你*好”,在匹配关键字时,如果遇到星号就忽略原文本下一个为特殊的字符。
  3、遇到谐音和拆字时,没什么好办法了,只好将这些谐音词和拆分词也加入到关键字列表。
4、不用正则表达式或者 String.IndexOf方法,可以将所有关键字的首字相同的组成一个一个小组,然后在将首字放到一个散列表(HashTable/Dictionary<T>),在扫描原文本时先在散列表里扫描,如果碰到了首字再扫描同组的关键字,这样简单处理一下效率可以提高很多。
  还有一个比用散列表更好的方法,将散列表改成一个大小为char.MaxValue的数组,然后将首个文字转成int,即char->int,然后将关键词集合放到相应下标里。这样在扫描原文本时,将被扫描的字符转成int,然后试探数组相应下标的元素是否不为NULL。这样比用散列表会更快一些。
  5、在定义关键字时,同时给一个“级别”属性,例如使用 E,R,B分别表示只记录、替换、禁止等情况。
  于是关键字的列表如下所示:
  你滚 E
  他niang的 R
  成*人*网*站 B
  这里贴一下关键的部分代码:
privateWordGroup[]_wordTable;
publicFilterResultFilter(refstringsou


相关文档:

asp.net wap 2.0 实现 ishtml32 下 加载 css文件

使用asp.net 开发wap 网站,在ishtml32下,如果手机浏览器支持ishtml32,但是 SupportsCss=False 时,想加载css文件时,采用重写mobile:form的方法来实现
using System;
using System.Configuration;
using System.Web.UI.MobileControls;
using System.Web.UI.MobileControls.Adapters;
public class MyForm : Form
{ ......

ASP.NET处理Session丢失

-----------------------------------------------------引言开始-----------------------------------------------------
      事情的起因是站点出现未登陆的假象,点着点着就跳到登陆页或提示用户登陆。
因为很多页面都继承了一个PageBase类,这个类会判断用户是否登陆如果没有登陆就会 ......

详解VS2010中ASP.NET @Page指令属性

@Page指令位于每个ASP.NET页面的顶部,告诉ASP.NET这个具体页面使用什么属性,以及该页面继承的用户控件。ASP.NET页面
@Page指令属性有:AspCompat、Async、AsyncTimeout、AutoEventWireup、Buffer、
ClassName、ClientIDMode、CodeBehind、
CodeFile、CodeFileBaseClass、CodePage、CompilationMode 、ContentType、 ......

ASP.NET获取中文首字母

//ASP.NET获取中文首字母
    public class Converter
    {
        static public string GetChineseSpell(string strText)
        {
            ......

Asp.Net细节性问题精萃

1.<%=...%>与<%#... %>的区别:
答:<%=...%>是在程序执行时调用,<%#... %>是在DataBind()方法之后被调用
2.控件接收哪些类型数据?
答:接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号