Можно ли заменить в верхнем регистре в Visual Studio?

Можно ли заменить на в верхнем регистре в Visual Studio, используя диалоговое окно «Найти и заменить» и RegEx (?) а-ля: . => Upper(.)?

Скажем, у меня есть:

m_<b>a</b>blabla

Я хочу:

_<b>A</b>blabla

person serhio    schedule 30.04.2010    source источник
comment
Сколько вхождений выражения? Если число невелико, то я бы, вероятно, создал специальный временный макрос для этого.   -  person RickL    schedule 30.04.2010
comment
@RickL: Если вы создаете макрос, количество выражений должно иметь значение?! Мне просто интересно, возможно ли это с помощью функции «Найти/Заменить».   -  person serhio    schedule 30.04.2010
comment
Вроде да, потому что я бы создал макрос, который нашел бы следующую строку и записал ее соответствующим образом. Таким образом, вам нужно будет запустить макрос несколько раз, чтобы заменить все выражения. Думаю, если много, то можно легко отредактировать макрос и поставить цикл for... Ниже отвечу, как это решить с помощью временных макросов.   -  person RickL    schedule 30.04.2010


Ответы (3)


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

Я предполагаю, что вы используете здесь привязки клавиш С# по умолчанию.

  1. Нажмите CTRL+SHIFT+F, чтобы открыть диалог поиска в файлах.
  2. Нажмите «Использовать регулярные выражения».
  3. Установите «Найти что:» на «<m_:Ll» — слова, начинающиеся с m, подчеркивания, затем строчной буквы;
  4. Нажмите «Найти все», чтобы найти все вхождения;
  5. Нажмите CTRL+SHIFT+R, чтобы начать запись временного макроса;
  6. Нажмите F8, чтобы найти следующее вхождение искомого выражения;
  7. Нажмите правый курсор, правый курсор, SHIFT + правый курсор (чтобы пропустить "m_" и затем выбрать строчную букву);
  8. Нажмите CTRL+SHIFT+U, чтобы строчные буквы прописались;
  9. Нажмите CTRL+SHIFT+R, чтобы остановить запись временного макроса;
  10. Нажмите CTRL+SHIFT+P, чтобы воспроизвести временный макрос, который перейдет к следующему выражению и пропишет первую букву после "m_". Вам нужно нажать CTRL+SHIFT+P столько раз, сколько имеется выражений.
person RickL    schedule 30.04.2010
comment
Стоит отметить, что макросы были удалены из VS2012 ... больше ничего не может быть :( Раньше использовал их все время. - person noelicus; 11.09.2013
comment
Я использовал для этого Notepad++, так как его нет в VS2012: > stackoverflow.com/questions/1039226/ - person northben; 10.01.2014
comment
Можно ли использовать макрос для замены всех 26 раз (по одному на каждую букву)? Тогда вам нужно будет запустить макрос только 26 раз или, может быть, только один раз, если вы можете сделать это в одном макросе. - person mbomb007; 23.08.2017
comment
На данный момент альтернатив макросам нет, текстовые макросы для Visual Studio Расширение 2012–2017 поддерживает только текстовые действия, поэтому ничего не говорится о найти следующее вхождение, но, например, оно работает с прописными буквами. - person Thomas LAURENT; 12.10.2018
comment
Для Visual Studio 2019: marketplace.visualstudio.com/ - person Matt Arnold; 08.12.2020

Нет, Visual Studio не поддерживает это. Для справки о возможностях регулярных выражений в VS проверьте:

Регулярные выражения (Visual Studio)


(Исходный ответ, данный из-за неправильного толкования исходного вопроса)

Предполагая привязки клавиш Visual Studio C# по умолчанию.

Есть разные способы добиться этого.

Если это (переменная, метод, свойство и т. д.), вы можете использовать рефакторинг Rename для изменения всех экземпляров. Этот рефакторинг вызывается нажатием клавиши F2 на экземпляре, который вы хотите переименовать.

Если вы вносите изменения в само определение, вы также можете использовать SHIFT+ALT+F10, чтобы вызвать всплывающее окно активного рефакторинга, а затем выполнить переименование. все экземпляры.

Если это строковый литерал, вы можете использовать сочетание клавиш CTRL+U (нижний регистр) и CTRL+SHIFT+< kbd>U (верхний регистр) для быстрого переключения регистра выделения. Это справедливо для всего текста, отображаемого в редакторе, но наиболее полезно для строковых литералов.

person João Angelo    schedule 30.04.2010
comment
@serhio, боюсь, Visual Studio позволяет создавать выражения с тегами, на которые затем можно ссылаться (/1, /2 и т. д.), но не поддерживает изменение этих значений на лету. - person João Angelo; 30.04.2010
comment
FWIW: VSCode может. Скопируйте на него, сделайте свое волшебство, а затем скопируйте обратно. - person LosManos; 21.08.2020
comment
@LosManos Это чистое золото! Тот, кто одобрил этот запрос на изменение, должен получить премию Тьюринга IMO! В этой функции не хватает только одного: возможности использовать ее и в строке соответствия! Вы знаете, есть ли какие-то планы по реализации этого? - person Kenny83; 08.11.2020

Если вы используете код Visual Studio (вместо Visual Studio), вы можете использовать модификаторы: \u\U\l\L

  • Пример текста: m_<b>a</b>blabla
  • Найти: m_<b>(.*)</b>
  • Заменить: m_<b>\U$1</b>
  • Пример текста после замены: m_<b>A</b>blabla

Примечание. Это возможно только в Visual Studio Code 1.29 и более поздних версиях (выпущенных в августе 2020 г.). См. https://code.visualstudio.com/updates/v1_49#_case-change-in-regex-replace

person DBolton    schedule 23.09.2020