Visual Studio поиск / замена с именем локальной функции - PullRequest
0 голосов
/ 10 мая 2019

Я ищу способ поиска в моем cs-файле и замены текста на имя локальной функции.

например,

private void SampleFunction()
{
  string foo = “bar“;
}

Задача: поиск по каждомуbar “и заменить на имя функции.

Результат будет:

private void SampleFunction()
{
  string foo = “SampleFunction“;
}

Я знаю, что мог бы использовать отражение во время выполнения, но имя функции не читается из-за запутывания, поэтомуМне нравится помещать имя функции в строку.Автоматизированный для 600 функций, которые я использую.

Есть ли какой-нибудь (простой) способ архивировать это?Спасибо за вашу поддержку.

Кстати.Я гуглил и искал через переполнение стека, но не нашел ни одного полезного поста для этого конкретного случая.

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Как сказал другой отвечающий, вы можете использовать Ctrl + Shift + H для поиска и замены во всех файлах, но вам понадобится довольно умное регулярное выражение (регулярные выражения), чтобы получить то, что вы хотите напрямую,Вы должны установить поиск-замену для использования регулярных выражений, используя для этого флажок.(Не забудьте потом выключить его, если вы не используете его регулярно.)

В вашем примере было бы просто найти

void (\S+)\(\)(\s*){(\r\n\s*)string foo = "bar";

и заменить его начто-то вроде

void $1()$2{$3string foo = "$1";

Вернее, будет простым, если вы уже знаете регулярное выражение.Я попробовал это регулярное выражение в некоторых моих собственных кодах, и это сработало.Однако становится намного сложнее, если некоторые методы принимают параметры, а другие нет, если некоторые void, а другие возвращают что-то, если появляются ключевые слова видимости, такие как public и private, и т. Д., И т. Д.

Так что, честно говоря, вы можете просто стиснуть зубы и сделать это частично вручную.Вы можете выполнить поиск характеристик сигнатуры (например, void или public) и отредактировать вручную каждый экземпляр.

Вы также можете написать код, который работает с вашими файлами, но это, безусловно, займет гораздо больше времени, чем другие.options.

Кстати, есть функция с именем nameof(…), которая также прекрасно справляется с этой задачей, но вам все равно придется определять каждое место, где ее использовать, и itвозвращает значения времени выполнения при использовании, поэтому, если имена запутаны, nameof() также должны быть.

Если вы ищете в Интернете регулярные выражения для этой цели, вы можете найти что-то достаточно продвинутое, чтобы полностью удовлетворить ваш поискнеобходимо.Редактировать его, чтобы делать именно то, что вам нужно, будет медведь, если вы не знаете регулярное выражение или у вас нет времени, чтобы изучить его прямо сейчас.: -)

Надеюсь, это поможет!

0 голосов
/ 11 мая 2019

Если вы просто хотите сделать это в VS, вы можете сделать ctrl-shift-H, чтобы найти и заменить. Это можно сделать в файле, папке, проекте или решении.

Если вы хотите сделать это в коде, вы можете использовать что-то вроде этого

Как найти и заменить текст в файле с C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...