关于NET髒字过滤的算法代码我这里测试的时候RegEx要快一倍左右但是还是不太满意应为我们网站上髒字过滤用的相当多对效率已经有了一些影响经过一番思考后自己做了一个算法在自己的机器上测试了一下使用原文中的髒字库xc的字符串长度次循环文本查找耗时msRegEx用了ms而我的算法只用了ms
主要算法如代码所示
以下是引用片段
privatestaticDictionarydic=newDictionary();
privatestaticBitArrayfastcheck=newBitArray(charMaxValue);
staticvoidPrepare()
{
string[]badwords=//readfromfile
foreach(stringwordinbadwords)
{
if(!dicContainsKey(word))
{
dicAdd(wordnull);
maxlength=MathMax(maxlengthwordLength);
intvalue=word[];
fastcheck[word[]]=true;
}
}
}
使用的时候 以下是引用片段
intindex=;
while(index<targetLength)
{
if(!fastcheck[target[index]])
{
while(index<targetLength&&!fastcheck[target[++index]]);
}
for(intj=;j<MathMin(maxlengthtargetLengthindex);j++)
{
stringsub=targetSubstring(indexj);
if(dicContainsKey(sub))
{
sbReplace(sub***indexj);
index+=j;
break;
}
}
index++;
}
我们在遇到问题的时候不要一味地去借用别人的代码
有时候动动脑筋说不定有意外的惊喜!