我发现我的程序正在搜索大量长度超过20,000的字符串,试图找到特定的唯一短语。
在C#中,什么是最有效的方法?
以下是当前的代码,它的工作方式如下:
- 搜索从startPos开始,因为目标区域与开头有些偏差
- 它循环遍历字符串,在每一步检查从该点开始的子串是否以startMatchString开头,这表明已找到目标字符串的开头。(目标字符串的长度不同)
- 从这里开始,创建一个新的子字符串(截去标志目标字符串开始的11个字符),并搜索endMatchString。
我已经知道这是一个非常复杂且可能非常低效的算法。有没有更好的方法来实现相同的结果?
string result = string.Empty;
for (int i = startPos; i <= response.Length - 1; i++)
{
if (response.Substring(i).StartsWith(startMatchString))
{
string result = response.Substring(i).Substring(11);
for (int j = 0; j <= result.Length - 1; j++)
{
if (result.Substring(j).StartsWith(endMatchString))
{
return result.Remove(j)
}
}
}
}
return result;