2012-01-26 180 views
0

我使用代码来搜索字符串的数量和匹配他们与一个字符串。c# - 字符串匹配

我的代码:

foreach (string needle in list) 
{ 
    if (Regex.IsMatch(haystack,needle)) 
    { 
     //do some stuff 
    } 
} 

有什么办法用来加快匹配过程?

+0

如果找到特定的针头,还是至少有一根针头在干草堆里面,您是否必须现在? – Gregor

+1

示例,数量,大小,所需性能? –

+0

也许.Matches()代替? –

回答

2

如果您的正则表达式是合理的,那么很可能您当前的方法是可以的。您可能要考虑使用编译的正则表达式而不是带有字符串的静态IsMatch。

如果您需要更高的速度 - 考虑更好的算法(即从http://en.wikipedia.org/wiki/String_searching_algorithm开始),您可以构建比单个组合更快的搜索结果。

请注意,与任何性能问题一样,不能替代测量 - 尝试和比较。

0

那么你必须通过整个列表,至少意味着一个O(n)复杂性。加快这一过程的一种可能的方法是首先对列表进行排序,但这只会将算法复杂度提高到O(n Log n)。