Глобальный поиск и замена в Visual Studio - PullRequest
5 голосов
/ 14 октября 2008

У меня есть решение с несколькими проектами, и нам нужно сделать несколько серьезных глобальных замен.

Есть ли способ сделать подстановочный знак, где некоторые значения остаются после замены?

Так, например, если я хочу, чтобы каждый HttpContext.Current.Session [«whatvalue»] становился HttpContext.Current.Session [«whatvalue»]. переданное строковое значение будет соблюдаться? Я не хочу заменять «whatvalue», я просто хочу добавить .ToString (), где шаблон соответствует.

Возможно ли это в Visual Studio?

Ответы [ 6 ]

18 голосов
/ 14 октября 2008

Во-первых, сделайте резервную копию своих проектов, на всякий случай ... Всегда хорошая идея перед массовыми заменами.

Затем в диалоговом окне «Найти / заменить» установите флажок «Использовать регулярные выражения»:

В поле Найти используйте шаблон:

HttpContext\.Current\.Session\["{.@}"\]

и в поле Заменить используйте:

HttpContext.Current.Session["\1"].ToString()
4 голосов
/ 14 октября 2008

Вы хотите открыть расширитель «Параметры поиска» и выбрать опцию «Использовать регулярные выражения». После того, как вы это сделаете, вы захотите использовать их в качестве записей для поиска / замены:

Найти:

HttpContext\.Current\.Session\[{("([^"]|\")*")}\]

Заменить:

HttpContext.Current.Session[\1].ToString()

Дополнительное примечание:

Как только вы включите опцию регулярных выражений, вы сможете использовать кнопки со стрелками, указывающими вправо, для доступа к фрагментам синтаксиса Regex в Visual Studio.

Также обратите внимание, что синтаксис Regex в Visual Studio довольно гетто, поскольку он не изменился со времен Visual Studio 6 (или более ранних версий?), Поэтому не принимайте какие-либо элементы синтаксиса как должное.

Например, можно было бы ожидать, что мое регулярное выражение find выше не работает, потому что обратный слеш перед двойной кавычкой не экранирован должным образом, но на самом деле, добавление туда двойного обратного слеша нарушит выражение, а не исправит его. *

4 голосов
/ 14 октября 2008

Легко ... использовать регулярные выражения и группировки.

Найти что: (HttpContext.Current.Session [ «whatevervalue»])

Заменить на: \ 0.ToString ();

Не забудьте проверить использование: и выберите Регулярные выражения

2 голосов
/ 28 октября 2014

Кажется, что ни один из этих ответов не работает в Visual Studio 2013, так как эта версия, похоже, наконец-то переключилась на стандартный RegEx. Тем не менее, те, кто не является экспертом RegEx или те, кто привык к старому синтаксису VS Find / Replace RegEx, сочтут кнопки быстрого вызова RegEx очень полезными.

Пожалуйста, смотрите этот ответ для получения дополнительной информации, включая Find / Replace / Surround С примерами:

Visual Studio «Найти и окружить» вместо «Найти и заменить»

0 голосов
/ 14 октября 2008

Вы также можете использовать бесплатный инструмент Refactor для скачивания, доступный по адресу http://www.devexpress.com/Products/NET/IDETools/RefactorASP/

Это намного больше, чем просто поиск и замена, которые они называют переименованием членов с более понятными именами. Его различные функции помогут вам улучшить ваш код.

0 голосов
/ 14 октября 2008

Вы можете использовать Visual Assist для подобных задач. Это мощный инструмент для различных видов рефакторинга.

...