ActionScript 3敏感詞過濾演算法

2021-07-04 19:35:23 字數 2543 閱讀 5637

最簡單的敏感詞查詢辦法應是

for

each(var i in 敏感詞列表)//end for

return

false;

也包括使用正則的簡單查詢辦法

我們需要了解的是,即使正則和indexof是flash自帶方法、效率較高,它們仍然需要逐字查詢字串

對單個敏感詞,時間代價是o(n);//n是原字串長度

而敏感詞有m個時,時間代價變成o(m*n);

下面辦法通過預計算將敏感詞做成樹型結構,方便查詢。能將執行時時間代價降低到o(n)左右,藉此提高發現敏感詞的速度。

下面第乙個類是用來測試結果的,使用時可以根據具體要求進行變化:

package

private

function

oncomplete

(e:event)

:void

//trace(wordsvec);

testfilter.regsensitivewords(wordsvec);

var strtest:string = "總理是朱八重,***shi總理。曾經***是總理,曾經有個恐怖組織叫做東突厥斯坦恐怖組織";

trace(testfilter.findsensitivewordsin(strtest));

}private

function

onsort

(a:string, b:string)

:int

else }}

}

下面這個類主要是建立敏感詞庫的儲存數結構:

// actionscript file

package

; isleaf=true;

}//end of function

public

function

getchild

(name:string)

:treenode//end of function

public

function

setchild

(key:string)

:treenode//end of function

public

function

getfullword

():string//end while

return rt;

}//end of function

}//end of class

}

建立好樹結構以後就可以從文字中讀取資料,然後將資料儲存成樹結構即可:

package

//end if

currentbranch=tmp;

}else //end if

}//end for

if(!currentbranch.isleaf)//end if

//trace(currentbranch.value);

}//end for

}//end of function

public

function

findsensitivewordsin

(og:string)

:string

tmpstr = tmpstr.substr(tmpstr.length - tmplength, tmpstr.length - 1);

og = og.replace(tmp.getfullword(), tmpstr);

//return tmp.getfullword()+" @["+c+"]" + "######" + og;

}//end if

//從node開始,敏感詞的下乙個字也被匹配到,並且已經完整地匹配了乙個敏感詞,可以返回

ptrs.push(tmp);

//trace(og.replace( , "*"));

//從node開始,下乙個字也匹配到了,但還沒有完整地匹配乙個敏感詞,那麼將下乙個字的節點壓入嫌疑列表

}//end if

}//end while

//之後從treeroot開始查詢。因treeroot的子項是所有敏感詞的第乙個字,這裡在嘗試匹配是否有與char相同的敏感詞第一字

tmp=treeroot.getchild(char);

if(tmp)

//trace(tempstr);

//og = og.replace(tmp.getfullword(), tempstr);

if(tmp.isleaf)//end if

//如果是乙個字的敏感詞,直接返回

ptrs.push(tmp);

//如果匹配上了非單字敏感詞的第乙個字,那麼將其加入嫌疑列表

}//end if

}//end for

return og;

}//end of function

}//end of class

}//end of file

大致演算法如此,以後有時間再來優化。

ActionScript 3 記憶體清理

記憶體清理基類一般顯示物件,只要繼承這個就好了 根據測試不是很複雜的物件 一般都會被釋放掉所佔記憶體 package protected var mystage stage protected function addedtostage e event void 延時移除舞台 param event...

ActionScript3 常用公式

基本三角函式的計算 角的正弦值 對邊 斜邊 角的余弦值 鄰邊 斜邊 角的正切值 對邊 鄰邊 角度制與弧度制的相互轉換 弧度 角度 math.pi 180 角度 弧度 180 math.pi 計算兩點間距離 dx x2 x1 dy y2 y1 dist math.sqrt dx dx dy dy 緩動...

actionscript3 事件型別

event事件型別 activate 啟用事件 deactivate 物件休眠事件 added 可視物件新增事件 added to stage 可視物件新增到舞台事件 removed 可視物件移除事件 removed from stage 可視物件從舞台移除事件 enter frame 幀頻事件 滑...