asp.NET 臟字過濾算法
但在我這里測試的時(shí)候,RegEx要快一倍左右。但是還是不太滿意,因?yàn)槲覀兙W(wǎng)站上臟字過濾用的相當(dāng)多,對效率已經(jīng)有了一些影響,經(jīng)過一番思考后,自己做了一個(gè)算法。在自己的機(jī)器上測試了一下,使用原文中的臟字庫,0x19c的字符串長度,1000次循環(huán),文本查找耗時(shí)1933.47ms,RegEx用了1216.719ms,而我的算法只用了244.125ms.
更新:新增一個(gè)BitArray,用于判斷某char是否在所有臟字中出現(xiàn)過。總時(shí)間由244ms降到了34ms.
主要算法如代碼所示
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);
fastcheck[word[0]] = true;
}
}
}
使用的時(shí)候
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.NET過濾器的應(yīng)用方法介紹
- asp.net 過濾圖片標(biāo)簽的正則
- ASP.NET環(huán)境下為網(wǎng)站增加IP過濾功能
- ASP.NET過濾HTML標(biāo)簽只保留換行與空格的方法
- ASP.NET過濾HTML字符串方法總結(jié)
- ASP.NET中的URL過濾實(shí)現(xiàn)代碼
- asp.net 臟字典過濾問題 用正則表達(dá)式來過濾臟數(shù)據(jù)
- Asp.net之?dāng)?shù)據(jù)過濾淺析
- ASP.NET過濾類SqlFilter,防止SQL注入
- 高效.NET臟字過濾算法與應(yīng)用實(shí)例
相關(guān)文章
NetCore實(shí)現(xiàn)全局模型綁定異常信息統(tǒng)一處理(場景分析)
本文主要講解NetCore如何使用中間件捕獲模型綁定的異常信息,對NetCore實(shí)現(xiàn)全局模型綁定異常信息統(tǒng)一處理場景分析及實(shí)現(xiàn)代碼感興趣的朋友一起看看吧2021-12-12Asp.NET 隨機(jī)碼生成基類(隨機(jī)字母,隨機(jī)數(shù)字,隨機(jī)字母+數(shù)字)
對于需要用asp.net 字母,隨機(jī)數(shù)字,隨機(jī)字母+數(shù)字生成隨機(jī)碼的朋友用的到2008-11-11ASP.NET MVC3 SEO優(yōu)化:利用Routing特性提高站點(diǎn)權(quán)重
這篇文章主要介紹了ASP.NET MVC3 SEO優(yōu)化:利用Routing特性消除多個(gè)路徑指向同一個(gè)Action,從而提高站點(diǎn)權(quán)重,需要的朋友可以參考下。2016-06-06ASP.net中Core自定義View查找位置的實(shí)例代碼
在本篇文章里小編給大家分享的是關(guān)于ASP.net中Core自定義View查找位置的實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。2020-04-04如何在Asp.Net Core MVC中處理null值的實(shí)現(xiàn)
這篇文章主要介紹了如何在Asp.Net Core MVC中處理null值的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12asp.net MVC實(shí)現(xiàn)無組件上傳圖片實(shí)例介紹
無組件實(shí)現(xiàn)上傳圖片使用input的file作為上傳選擇文件,具體實(shí)現(xiàn)如下:前后臺(tái)代碼很詳細(xì),感興趣的朋友們可不要錯(cuò)過了哈2013-05-05利用Timer在ASP.NET中實(shí)現(xiàn)計(jì)劃任務(wù)的方法
利用Timer在ASP.NET中實(shí)現(xiàn)計(jì)劃任務(wù)的方法...2007-04-04