Я записываю содержимое текстового файла в StringBuilder и затем хочу выполнить ряд действий по поиску/замене текста, содержащегося в StringBuilder, используя регулярные выражения.
Я столкнулся с проблемой, поскольку функция замены StringBuilder не может принимать аргументы регулярных выражений.
Я мог бы использовать Regex.Replace для обычной строки, но у меня сложилось впечатление, что это неэффективно из-за того, что в памяти нужно будет создать две копии строки, поскольку строки .net неизменяемы.
После обновления текста я планирую записать его обратно в исходный файл.
Каков наилучший и наиболее эффективный способ решения моей проблемы?
EDIT
В дополнение к ответам ниже, я нашел следующие вопросы, которые также проливают свет на мою проблему -
Лучшее и наиболее эффективное решение для вашего времени - сначала попробовать самый простой подход: забудьте о StringBuilder
и просто используйте Regex. Заменить
. Затем узнайте, насколько он медленный - вполне может быть достаточно. Не забудьте попробовать регулярное выражение как в скомпилированном, так и в нескомпилированном режиме.
Если это не достаточно быстро, рассмотрите возможность использования StringBuilder
для любых замен, которые вы можете просто выразить, а затем используйте Regex.Replace
для остальных . Вы также можете попытаться объединить замены, уменьшив количество используемых регулярных выражений (и, следовательно, промежуточных строк).