Знайти та замінити - Додати повернення перевезення АБО Новий рядок


183

У разі наступного рядка для розбору

ford mustang,10,blue~~?bugatti veyron,13,black

Я хочу , щоб замінити ~~?зcarriage return

Заміна \nпросто додає рядок"\n"

Як це можна зробити?

Відповіді:


272

Переконайтесь, що в діалоговому вікні "Знайти та замінити" вибрано "Використовувати: регулярні вирази":

Діалог "Знайти / замінити" Використовувати регулярні вирази

Зауважте, що для Visual Studio 2010 це не працює в розширенні "Швидкий пошук" для Visual Studio Productivity Studio (станом на оновлення липня 2011 року); натомість вам потрібно буде використовувати повне діалогове вікно "Знайти та замінити" (використовувати Ctrl + Shift + H або Редагувати -> Знайти та замінити -> Замінити у файлах) та змінити область на "Поточний документ".


5
також зручно скористатися кнопкою "Відтворити" праворуч від тексту Знайти
Cel

3
і якщо ви намагаєтеся відповідати спеціальним символам, таким як дужки, не забувайте використовувати, наприклад, \)коли регулярні вирази включені ...
Cel

2
У ?Regex символу потрібно уникати, оскільки він означає, що попередній елемент необов'язковий. Таким чином, правильний текст "Знайди що" ~~\?, із знаком питання, уникнутим зворотним нахилом. Відповідь, яку ви дали, працює над зразковим текстом, тому що він жадібно знайде другий тильд і споживає його, однак, якщо один текст може бути в тексті де завгодно, він також буде неправильно замінений на новий рядок.
ErikE

Якщо встановлено Power Tools Power Tools, ви все одно можете виконати ctrl + shit + h, а потім ctrl + h, щоб відкрити вікно візуального пошуку / заміни Visual Studio.
Неб

Слід зазначити, що якщо вибрано "Використовувати регулярні вирази", можна також використовувати "\ n" для пошуку (та заміни) нових рядків.
Джейкоб Локард

28

Ви також можете спробувати \x0d\x0aу полі "Замінити" на "Використовувати регулярне вираження", щоб встановити повернення каретки + канал каналів за допомогою пошуку / заміни Visual Studio. Використання \n(лінія каналу) те саме, що\x0a


13

Якщо встановити прапор "Використовувати регулярні вирази", \ n буде переведено. Але майте на увазі, що вам доведеться змінити пошуковий термін, щоб він був зручним для регулярних викидів. У вашому випадку його слід уникати так "\ ~ \ ~ \?" (без лапок).


3
'~' не потрібно уникати в Regex. Це буквальний характер. Це неправильно.
ErikE

12

Якщо ви хочете уникнути клопоту щодо уникнення спеціальних символів у рядку пошуку та заміни, використовуючи регулярні вирази, виконайте наступні дії:

  1. Пошук початкового рядка, і замінити його на «UniqueString42», з регулярними виразами вихідних .
  2. Шукайте "UniqueString42" та замініть його на "UniqueString42 \ nUniqueString1337", з регулярними виразами на
  3. Шукайте "UniqueString42" та замініть його першим рядком вашої заміни (найчастіше оригінальним рядком), виключаючи регулярні вирази .
  4. Шукайте "UniqueString42" та замініть його другим рядком вашої заміни, виключаючи регулярні вирази .

Зауважте, що навіть якщо ви хочете вручну підбирати відповідність для першого пошуку та заміни, ви можете сміливо використовувати "замінити всі" для трьох останніх кроків.

Приклад

Наприклад, якщо ви хочете замінити це:

public IFoo SomeField { get { return this.SomeField; } }

З цим:

public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }

Ви будете робити такі заміни:

  1. public IFoo SomeField { get { return this.SomeField; } }XOXOXOXO( вимкнення зворотного виразу ).
  2. XOXOXOXOXOXOXOXO\nHUHUHUHU(повторне вираження увімкнено ).
  3. XOXOXOXOpublic IFoo Foo { get { return this.MyFoo; } }( вимкнення зворотного виразу ).
  4. HUHUHUHUpublic IFoo Bar { get { return this.MyBar; } }( вимкнення зворотного виразу ).

@Alex Якщо у вас є практичне рішення цієї проблеми, яке дозволяє уникнути необхідності вручну уникати пошуку та замінювати текст, перетворюючи його на звичайні вирази, і витрачати наступні 10 хвилин на виправлення створеного таким чином монстра, я буду дуже радий почути це, оскільки моя відповідь - просто потворний злом. Але, як бачите, всі інші відповіді, які працюють у ванільній Visual Studio без додаткових плагінів, вимагають використання регулярних виразів і, таким чином, уникнути простого тексту.
Сюзанна Дюперон

2
Я не мав на увазі це погано. Мої вибачення я забув поставити смайлик: D Що стосується рішення, у мене немає такого, що передбачає VS. Але я виявив, що будь-який гідний зовнішній редактор, який підтримує регулярний вираз (блокнот ++ тощо), працює досить добре.
Олексій

2
UltraEdit - король пошуку заміни - тут ви шукаєте нові рядки, рядки або що завгодно, просто позначивши ці рядки та розпочавши пошук. - Щодо заміни ви simpy введіть ^ n для \ n, ^ r для \ r і ^ t для \ t - якби тільки VS2010 зробив би те саме :-)
Miros

Ви завжди можете відвідати regex101.com, щоб побачити, чи буде ваша пошукова рядок збігатися з буквальними символами чи інтерпретуватись як символи керування Regex.
ErikE

7

Ви можете використовувати багаторядковий пошук і заміну в макросі Visual Studio, який забезпечує приємний графічний інтерфейс для виконання завдання.

введіть тут опис зображення


Здається, не працює з Visual Studio 2017 без додаткових кроків, тобто потрібно натиснути кнопку "знайти у файлах", а потім змінити область діалогового діалогу.
Марк Шультейс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.