Вы можете использовать String.IndexOf, но убедитесь, что вы используете StringComparison.Ordinal, иначе он может быть на порядок медленнее.
private string Search2(int startPos, string startMatchString, string endMatchString, string response) {
int startMarch = response.IndexOf(startMatchString, startPos, StringComparison.Ordinal);
if (startMarch != -1) {
startMarch += startMatchString.Length;
int endMatch = response.IndexOf(endMatchString, startMarch, StringComparison.Ordinal);
if (endMatch != -1) { return response.Substring(startMarch, endMatch - startMarch); }
}
return string.Empty;
}
Поиск 1000 раз строки в 40% файла размером 183 КБ занял около 270 миллисекунд. Без StringComparison.Ordinal это заняло около 2000 миллисекунд.
Поиск 1 раз с вашим методом занял более 60 секунд, так как он создает новую строку (O (n)) каждую итерацию, делая ваш метод O (n ^ 2).