Чтобы определить, какой из них самый быстрый, вам нужно будет протестировать свою собственную систему. Однако регулярные выражения сложны, и есть вероятность, что String.Contains()
будет самым быстрым, а в вашем случае - и самым простым решением.
Реализация String.Contains()
в конечном итоге вызовет собственный метод IndexOfString()
, а реализация этого метода известна только Microsoft. Тем не менее, хороший алгоритм для реализации этого метода использует так называемый алгоритм Кнута-Морриса-Пратта . Сложность этого алгоритма составляет O (m + n) , где m - длина искомой строки, а n - длина строки. Вы ищете, чтобы сделать его очень эффективным алгоритмом.
На самом деле эффективность поиска с использованием регулярных выражений может быть низкой O (n) в зависимости от реализации, поэтому в некоторых ситуациях она все еще может быть конкурентной. Только эталон сможет определить это.
Если вы действительно обеспокоены скоростью поиска, у Кристиана Чарраса и Тьерри Лекрока есть много материала о точных алгоритмах сопоставления строк в Университете Руана.