我使用代码来搜索字符串的数量和匹配他们与一个字符串。c# - 字符串匹配
我的代码:
foreach (string needle in list)
{
if (Regex.IsMatch(haystack,needle))
{
//do some stuff
}
}
有什么办法用来加快匹配过程?
我使用代码来搜索字符串的数量和匹配他们与一个字符串。c# - 字符串匹配
我的代码:
foreach (string needle in list)
{
if (Regex.IsMatch(haystack,needle))
{
//do some stuff
}
}
有什么办法用来加快匹配过程?
如果您的正则表达式是合理的,那么很可能您当前的方法是可以的。您可能要考虑使用编译的正则表达式而不是带有字符串的静态IsMatch。
如果您需要更高的速度 - 考虑更好的算法(即从http://en.wikipedia.org/wiki/String_searching_algorithm开始),您可以构建比单个组合更快的搜索结果。
请注意,与任何性能问题一样,不能替代测量 - 尝试和比较。
那么你必须通过整个列表,至少意味着一个O(n)复杂性。加快这一过程的一种可能的方法是首先对列表进行排序,但这只会将算法复杂度提高到O(n Log n)。
如果找到特定的针头,还是至少有一根针头在干草堆里面,您是否必须现在? – Gregor
示例,数量,大小,所需性能? –
也许.Matches()代替? –