it-swarm.com.ru

Как удалить дубликаты строк в коде Visual Studio?

Скажем, у вас есть следующий текст:

abc
123
abc
456
789
abc
abc

Я хочу удалить все строки "abc" и оставить одну. Я не против сортировки. Результат должен быть таким:

abc
123
456
789
56
Younes

Если порядок строк не важен

Сортируйте строки по алфавиту, если их еще нет, и выполните следующие действия:
(на основе этого связанного вопроса: Как найти и удалить повторяющиеся строки из файла с помощью регулярных выражений? )

  1. Control+F

  2. Переключатель "Режим замены"

  3. Переключите "Использовать регулярное выражение" (значок с символом .*)

  4. В поле введите ^(.*)(\n\1)+$

  5. В поле " заменить на " введите $1

  6. Нажмите the Replace All button ("Заменить все").

Если порядок строк важен , то вы не можете сортировать

В этом случае либо прибегните к решению вне кода VS (см. здесь ), либо - если ваш документ не очень большой и вы не против спамить кнопку Заменить все - выполните предыдущие шаги, но в шагах 4 и 5 введите эти:
(на основе Удалить определенные повторяющиеся строки без сортировки )

Осторожно: блокирует файлы со слишком большим количеством строк (более 1000); может привести к сбою кода VS; может вводить пустые строки в некоторых случаях.

  • поиск : ((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?

  • заменить на : $1

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

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

116
Marc.2377

Только что возникла та же проблема, и был найден пакет VSCode "Сортировка строк", подробности см. На рынке VSCode (например, https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines ).

В этом пакете есть опция "Сортировка строк (уникальная)", которая сделала это для меня. Позаботьтесь о любых пробелах в начале/конце строк, они влияют на то, считаются ли строки уникальными или нет.

19
SimonAx

Вот очень интересное расширение: Transformer

Особенности:

  • Уникальные Линии
  • Уникальные линии как новый документ
  • Линии фильтра
  • Линии фильтра как новый документ
  • Сортировать линии
  • Сортировать строки по длине
  • Выровнять по курсору
  • Выровнять CSV
  • Компакт CSV
  • Копировать в новый документ
  • Выберите Линии
  • Линии как JSON
  • Линии обрезки
  • Считать дубликаты строк как новый документ
  • Макрос

Для удаления повторяющихся строк:

  • Удаляет дубликаты строк из документа

  • Работает на выделение или текущий блок, если нет выбора

Я не играл с ним много, кроме команды "Уникальные линии", но это, кажется, довольно хорошо сделано (в том числе попытка макро-рекордер!).

18
Mark

Попробуйте найти и заменить на регулярное выражение.

  • Найти: ^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$

  • Заменить: $1$2

Можно ввести некоторую дисперсию в первую группу.

9
Lavock

Добавить к @ Marc.2377 с ответом.

Если порядок важен, и вам все равно, что вы сохраняете последнюю из повторяющихся строк, просто найдите регулярное выражение

^(.*\n)(?=(?:.*\n)*?\1)

и заменить ничем.

Это займет строку и попытается найти вперед еще несколько (возможно, 0) строк, за которыми следует точно такая же линия. Это удалит принятую строку.

Это всего лишь одноразовое регулярное выражение. Не нужно спамить кнопку замены.

6
Skeeve

Установите расширение DupChecker, нажмите F1введите "Проверить дубликаты".

Он проверит дубликаты и спросит, хотите ли вы их удалить.

6
perfecto25