Справка по Visual Studio для поиска и замены регулярных выражений
Я хотел бы заменить некоторые инструкции присваивания, например:
int someNum = txtSomeNum.Text;
int anotherNum = txtAnotherNum.Text;
с
int someNum = Int32.Parse(txtSomeNum.Text);
int anotherNum = Int32.Parse(txtAnotherNum.Text);
Есть ли хороший способ сделать это с помощью Visual Studio Find and Replace, используя регулярные выражения? Я не уверен, каким будет выражение Regular.
Ответы
Ответ 1
Я думаю, что в Visual Studio вы можете отметить выражения с фигурными фигурными скобками {txtSomeNum.Text}
. Затем в замене вы можете ссылаться на него с помощью \1
. Таким образом, строка замены будет выглядеть как Int32.Parse(\1)
.
Обновление: через @Timothy003
VS 11 устраняет синтаксис {}\1 и использует() $1
Ответ 2
Подробное руководство
http://blog.goyello.com/2009/08/22/do-it-like-a-pro-%E2%80%93-visual-studio-find-and-replace/
Ответ 3
Это то, что я искал:
Найти: = {. * \. Текст}
Заменить: = Int32.Parse(\ 1)
Ответ 4
Лучшее регулярное выражение для исходной проблемы будет
find expr.: {: я \.Text}
заменить выражение: Int32.Parse(\ 1)
Отъезд:
http://msdn.microsoft.com/en-us/library/2k3te2cs%28v=vs.100%29.aspx
для окончательного руководства по регулярному выражению в VS.
Недавно я завершил переформатирование другого программиста С++ проекта из ада. Он полностью и произвольно ввел или случайно удалил пробелы и табуляции, отступы (или нет) и безумный уровень вложенности круглых скобок, так что никто из нас не использовал стандарты кодирования любого типа, мог даже начать читать код прежде чем я начал. Регулярно используется регулярное выражение для поиска и исправления ненормальных конструкций. Через пару часов я смог исправить основные проблемы примерно в 125 000 строк кода, фактически не глядя на большинство из них. В одном отдельном поиске/замене я изменил более 22 000 строк кода в 125 файлах, общее время менее 10 секунд.
Особенно полезные конструкции в регулярном выражении:
: b + == одна или несколько пробелов и/или вкладок.
: я == соответствует имени переменной или ключевому слову типа C (т.е. while, if, pick3, bNotImportant)
: Wh == пробел char; не просто пробел или вкладка
: Sm == любой из арифметических символов (+, -, > , = и т.д.)
: Pu == любой знак препинания
\n == разрыв строки (полезно для поиска, где он вставил 8 или 10 пустых строк)
^ == соответствует началу строки ($ to match end)
Хотя было бы неплохо сопоставить какой-либо другой стандарт регулярных выражений (duh), я нашел несколько расширений MS, чрезвычайно полезных для поиска базы кода, например, не нужно определять идентификатор сотни раз как "[A-Za-z0-9] +", вместо этого просто используйте ": я".