国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.NET 臟字過濾算法

2024-07-10 12:38:27
字體:
來源:轉載
供稿:網友
原文見//www.survivalescaperooms.com/article/20575.htm
但在我這里測試的時候,RegEx要快一倍左右。但是還是不太滿意,因為我們網站上臟字過濾用的相當多,對效率已經有了一些影響,經過一番思考后,自己做了一個算法。在自己的機器上測試了一下,使用原文中的臟字庫,0x19c的字符串長度,1000次循環,文本查找耗時1933.47ms,RegEx用了1216.719ms,而我的算法只用了244.125ms.
更新:新增一個BitArray,用于判斷某char是否在所有臟字中出現過。總時間由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;
}
}
}

使用的時候
代碼如下:
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++;
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南靖县| 墨竹工卡县| 芦溪县| 白山市| 三台县| 电白县| 泾源县| 吴忠市| 肇庆市| 永宁县| 丹阳市| 江口县| 伊通| 乌鲁木齐县| 万源市| 柳林县| 兴和县| 微博| 永登县| 海南省| 文登市| 延庆县| 常州市| 榆林市| 闸北区| 紫金县| 稷山县| 浦城县| 石渠县| 巍山| 泾源县| 海口市| 云和县| 肥乡县| 大城县| 东兴市| 锦州市| 郴州市| 纳雍县| 鹤庆县| 河曲县|