2017-04-02 52 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

相关问题