Я решаю, какой из них использовать, либо использовать Regex.Replace
, либо использовать Regex.Matches
, если вам нужно выполнить некоторую логику в каждом матче, чтобы сгенерировать замененное значение.C# regex.replace vs regex.matches
Сценарий: Чтение файла (который может отличаться по размеру), а затем с использованием регулярного выражения для замены совпадений. замененное значение для каждого совпадения отличается и генерируется некоторой логикой.
Подход 1: Прочитайте полный файл, затем найдите все совпадения, а затем выполните цикл foreach или for и замените их по очереди.
Подход 2: прочитать полный файл, а затем использует метод Regex.Replace с MatchEvaluator, где функция MatchEvaluator выполняет логику и возвращает значение заменяется.
Существует статья, которую я хотел бы связать здесь, что почему-то дает мне ощущение, что не следует использовать Regex.Replace. Ссылка: https://blogs.msdn.microsoft.com/debuggingtoolbox/2008/04/02/comparing-regex-replace-string-replace-and-stringbuilder-replace-which-has-better-performance/
Если у вас есть проблемы с производительностью, вы должны реализовать собственное решение для своей уникальной проблемы. Все строковые функции предназначены для работы во всех случаях. Например, если у вас есть только символы нижнего регистра, вы можете реализовать лучший алгоритм поиска - замены, а затем любой другой для вашего дела. – cokceken
Если ваш файл меньше 1 ГБ, не беспокойтесь о производительности (любые выигрыши будут минимальными между Regex.Replace и Regex.Matches). Просто подходите к подходу, который, по вашему мнению, проще реализовать. – wdosanjos