Regex-замены внутри StringBuilder

Я записываю содержимое текстового файла в StringBuilder и затем хочу выполнить ряд действий по поиску/замене текста, содержащегося в StringBuilder, используя регулярные выражения.

Я столкнулся с проблемой, поскольку функция замены StringBuilder не может принимать аргументы регулярных выражений.

Я мог бы использовать Regex.Replace для обычной строки, но у меня сложилось впечатление, что это неэффективно из-за того, что в памяти нужно будет создать две копии строки, поскольку строки .net неизменяемы.

После обновления текста я планирую записать его обратно в исходный файл.

Каков наилучший и наиболее эффективный способ решения моей проблемы?

EDIT

В дополнение к ответам ниже, я нашел следующие вопросы, которые также проливают свет на мою проблему -

21
задан Community 23 May 2017 в 11:51
поделиться

1 ответ

Лучшее и наиболее эффективное решение для вашего времени - сначала попробовать самый простой подход: забудьте о StringBuilder и просто используйте Regex. Заменить . Затем узнайте, насколько он медленный - вполне может быть достаточно. Не забудьте попробовать регулярное выражение как в скомпилированном, так и в нескомпилированном режиме.

Если это не достаточно быстро, рассмотрите возможность использования StringBuilder для любых замен, которые вы можете просто выразить, а затем используйте Regex.Replace для остальных . Вы также можете попытаться объединить замены, уменьшив количество используемых регулярных выражений (и, следовательно, промежуточных строк).

28
ответ дан 29 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: