2017-04-02 80 views
0

我表現異形長一段時間我可以調整IndexOf選擇嗎?

事實證明,在大多數CPU是使用的的IndexOf功能

enter image description here

這裏的功能的應用

public static string func_Fix_Google_Source(string srSource) 
{ 
    int irIndex = srSource.IndexOf("<div id=\"gt-form-c\">"); 
    return srSource.Substring(irIndex); 
} 

字符串的長度會很重要嗎?我可以縮短查找字符串長度,我相信

回答

2

如果子字符串搜索成爲瓶頸,您可以切換到高級算法,如KMP

當您有很多「誤報」時,缺省字符串搜索可能非常昂貴,例如,大量

<div id="... 

正在搜索的文本中。

每當在匹配未開始的位置上發現上述前綴時,默認算法會按照確認匹配不存在的情況跟隨它,然後它會轉到下一個位置。相比之下,KMP跳過了許多已經看到的角色,提高了效率。

+0

ty爲答案。我假設c#本身不支持它,我必須編碼? – MonsterMMORPG

+0

好,我想。給開始索引接近該字符串提高了100倍以上:) – MonsterMMORPG

1

除了改善您搜索的方式外,IndexOf(字符串)重載使用當前文化進行比較。

使用StringComparision重載進行序數搜索可以獲得更好的性能。取決於你在做什麼〜8x。

int irIndex = srSource.IndexOf("<div id=\"gt-form-c\">", StringComparison.Ordinal); 
+0

哇我不知道這個 – MonsterMMORPG

相關問題