過濾非法字元

2021-05-01 21:07:49 字數 1562 閱讀 8910

再度改進,在髒字可能存在的情況下,例如出現了多個髒字前length-1部分時,效能相比http://www.cnblogs.com/xingd/archive/2008/01/31/1060425.html

中描述的又提公升了300%~400%。

直接貼出全部**了,通過新增的乙個byte[char.maxvalue]和bitarray(char.maxvalue),減少了大量的substring和gethashcode的呼叫。耗的記憶體也不算多,除hashset外,僅需要144k記憶體。

引用此文或者使用此**請說明出處,謝謝,以便於我將來的更新。

2008-02-02修訂:if (index > 0 || (fastcheck[text[index]] & 1) == 0) 應去掉index > 0的判斷,這個優化考慮的不夠成熟。感謝sumtec和靈感之源指出錯誤。避免最短匹配時,可以在 if (hash.contains(sub)) 之後,可以加入判斷 if ((fastlength[begin] >> math.min(j,7)) == 0),然後再return true。

2008-02-03修訂:for迴圈內部的if

((fastcheck[current] &1

) ==

0)應為if

((fastcheck[current] &1

) ==

0 && count == j

)。修正bug並加入大小寫敏感後,效率降低1倍。

public

class

badwordsfilter

public

void

init(

string

badwords)

for(

inti =7

; i 

<

word.length; i++)

if(word.length ==1

)else}}

public

string

filter(

string

text, 

string

mask)

public

bool

hasbadword(

string

text)

char

begin 

=text[index];

if(minwordlength ==1

&&charcheck[begin])

for(

intj =1

; j 

<=

math.min(maxwordlength, text.length 

-index -1

); j++)

if((fastcheck[current] &(

1<<

math.min(j, 

7))) ==0

)if(j +

1>=

minwordlength)}}

}index 

+=count;

}return

false;}

}

過濾非法字元

using system using system.componentmodel using system.collections using system.diagnostics using system.data using system.data.sqlclient using system....

正則過濾非法字元

小寫英文 大寫英文 任意數字 限2位小數 如 123.12 日 期 如 2002 9 29 任意中文 部分英文 範圍 a,b,c,d,e 部分中文 範圍 一二三四五六七 十 有關正規表示式 只能輸入數字和英文的 只能輸入數字的 只能輸入全形的 只能輸入漢字的 d 非負整數 正整數 0 0 9 1 9...

iOS過濾非法字串

碰到在搜尋框中過濾非法字元的問題,傳統的用while迴圈來操作就顯得太繁瑣,ios 的 nsstring 裡有相關的方法可以解決此問題。如下 nscharacterset donotwant nscharacterset charactersetwithcharactersinstring temp...