Как удалить дубликаты строк в коде Visual Studio?
Скажем, у вас есть следующий текст:
abc
123
abc
456
789
abc
abc
Я хочу удалить все строки "abc" и оставить одну. Я не против сортировки. Результат должен быть таким:
abc
123
456
789
10 ответов
Если порядок строк не важен
Сортируйте строки по алфавиту, если их еще нет, и выполните следующие действия:
(на основании этого связанного вопроса: как найти и удалить дубликаты строк из файла с помощью регулярных выражений?)
Control + F
Переключатель "Режим замены"
Переключите "Использовать регулярное выражение" (значок с
.*
условное обозначение)В поле поиска введите
^(.*)(\r?\n\1)+$
В поле " заменить на " введите
$1
Если порядок строк важен, поэтому вы не можете сортировать
В этом случае либо прибегните к решению вне кода VS (см. Здесь), либо - если ваш документ не очень большой и вы не против спамить кнопку "Заменить все" - выполните предыдущие шаги, но в шагах 4 и 5, введите эти:
(на основе Удалить определенные повторяющиеся строки без сортировки)
Осторожно: блокирует файлы со слишком большим количеством строк (более 1000); может привести к сбою кода VS; может вводить пустые строки в некоторых случаях.
поиск:
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
заменить на:
$1
и затем нажмите кнопку "Заменить все" столько раз, сколько будет повторений.
Вы узнаете, что этого достаточно, когда количество строк перестает уменьшаться, когда вы нажимаете кнопку. Перейдите к последней строке документа, чтобы следить за этим.
Вот очень интересное расширение: Трансформер
Характеристики
Unique Lines
Unique Lines As New Document
Filter Lines
Filter Lines As New Document
Sort Lines
Sort Lines By Length
Align To Cursor
Align CSV
Compact CSV
Copy To New Document
Select Lines
Lines As JSON
Trim Lines
Count Duplicate Lines As New Document
Macros
Для удаления повторяющихся строк:
Removes duplicate lines from the document
Operates on selection or current block if no selection
Я не играл с ним много, кроме команды "Уникальные линии", но это, кажется, довольно хорошо сделано (в том числе попытка макро-рекордер!).
Добавить к @Marc.2377 с ответом.
Если порядок важен, и вам все равно, что вы сохраняете последнюю из повторяющихся строк, просто найдите регулярное выражение
^(.*\n)(?=(?:.*\n)*?\1)
и заменить ничем.
Это займет строку и попытается найти вперед еще несколько (возможно, 0) строк, за которыми следует точно такая же линия. Это удалит принятую строку.
Это всего лишь одноразовое регулярное выражение. Не нужно спамить кнопку замены.
Только что возникла та же проблема, и был найден пакет VSCode "Сортировка линий", подробности см. На рынке VSCode (например, https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines).
В этом пакете есть опция "Сортировка строк (уникальная)", которая сделала это для меня. Позаботьтесь о любых пробелах в начале / конце строк, они влияют на то, считаются ли строки уникальными или нет.
Установите расширение DupChecker,
нажмите F1, введите "Проверить дубликаты"
он проверит дубликаты и спросит, хотите ли вы их удалить
Попробуйте найти и заменить на регулярное выражение.
Найти:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Заменить:
$1$2
Можно внести некоторую дисперсию в первую группу.
Если вы не возражаете против Vim в вашем VS Code. Вы можете установить плагин эмуляции Vim.
Затем вы можете использовать команды vim
:sort u
Он отсортирует строки и удалит дубликаты.
Возвышенный текст 3
Он имеет невероятно быстрые собственные функции перестановки.
Edit > Permute Lines > Unique
или ⇧⌘U, иEdit > Permute Selections > Unique
Visual Studio Code - мой ежедневный драйвер. Но я держу Sublime Text в режиме ожидания для таких ситуаций.
Чтобы удалить повторяющиеся строки в коде Visual Studio:
Выделите весь текст.
Нажимать:
Ctrl
+ + вкл.Windows
иLinux
Command
+Shift
+P
на macOSВведите «Удалить повторяющиеся строки» и выберите этот параметр. Он отфильтрует повторяющуюся строку и придаст ей уникальный текст.
На самом деле не в Visual Studio Code, но если это работает, то работает.
- Откройте новую таблицу Excel
- Вставить данные в столбец
- Перейдите на вкладку Data
- Выберите столбец данных (если вы еще этого не сделали)
- Щелкните Удалить дубликаты (примерно посередине панели).
- Щелкните, OK чтобы удалить дубликаты.
Это не лучший ответ, поскольку вы указали код Visual Studio, но, как я уже сказал: если он работает, он работает:)