ToolActToolAct

Инструмент для удаления дубликатов текста

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

Входной текст
Результат удаления дубликатов

Режим удаления дубликатов

Параметры

Статистика

Исходные элементы0
Уникальные элементы0
Дубликаты0

Что такое удаление дубликатов текста?

Text Deduplicate удаляет повторяющиеся строки, слова или элементы из текста, делая списки чище и удобнее для проверки. Он полезен для импортированных CSV-фрагментов, списков ключевых слов, email-коллекций, фрагментов логов, кодов товаров, вариантов промптов и заметок, где дубли появились из-за копирования, объединения или плохого экспорта. Главное — правило сравнения: регистр, пробелы в начале и конце, пустые строки, пунктуация, нормализация и исходный порядок влияют на то, считать ли элементы одинаковыми. Инструмент ускоряет очистку, но не заменяет предметную проверку, если похожие записи должны оставаться отдельно или маленькие различия важны. Для опубликованного или многоязычного контента результат нужно проверить по языку, charset, контексту и edge cases.

Как использовать

Основные операции

  1. Введите или вставьте текст для удаления дубликатов в левое текстовое поле
  2. Выберите подходящий режим удаления дубликатов (по строкам, словам, предложениям и т.д.)
  3. При необходимости настройте параметры (учёт регистра, сохранение порядка и т.д.)
  4. Результат удаления дубликатов и статистика появятся справа в реальном времени
  5. Нажмите кнопку копирования, чтобы сохранить результат в буфер обмена

Описание режимов

  • По строкам: каждая строка рассматривается как отдельная единица, одинаковые строки удаляются
  • По словам: текст разбивается по пробелам, повторяющиеся слова удаляются
  • По предложениям: разбивка по точкам, вопросительным и восклицательным знакам, повторяющиеся предложения удаляются
  • По абзацам: разбивка по пустым строкам, повторяющиеся абзацы удаляются
  • По символам: удаляются символы, встречающиеся в тексте несколько раз

Применение

Удаление повторяющихся строк, слов, предложений, абзацев или символовВыберите единицу дедупликации — инструмент сохраняет первое вхождение, сохраняя порядок уникальных элементов. Каждый режим использует подходящую стратегию разбиения и сборки, поэтому workflows для строк, абзацев, слов и символов ведут себя по-разному. Поиск по хеш-множеству работает за O(n) на проход, поэтому даже длинные списки дедуплицируются за один раунд в браузере.
Аудит дубликатов перед копированием очищенного текстаСтатистика показывает исходное количество, количество уникальных и удалённых дубликатов. Опциональное отображение дубликатов перечисляет найденные повторы — это полезно перед очисткой почтовых рассылок, списков ключевых слов, логов или экспортов опросов. Просмотр списка дубликатов позволяет убедиться, что нужные записи были объединены, прежде чем делиться очищенным результатом.
Контроль учёта регистра при сравненииВключите чувствительность к регистру, когда Apple и apple должны оставаться отдельными, или отключите, когда повторяющийся текст нужно обнаруживать независимо от регистра. Это делает один инструмент полезным как для очистки текста, так и для точных технических списков. Режим без учёта регистра нормализует ввод приведением к нижнему регистру перед хешированием, поэтому длинный лог не будет хранить «ERROR» и «error» как отдельные записи.
Очистка списков email или тегов с сохранением порядкаВставьте экспорт email и переключитесь в построчный режим с игнорированием регистра, чтобы объединить [email protected] и [email protected]. Порядок первого вхождения сохраняется, поэтому очищенный список по-прежнему сохраняет исходную группировку для импорта в CSV. Стабильность сортировки важна: результат должен сохранять последовательность ввода, а не переупорядочиваться по алфавиту.
Нормализация пробелов перед дедупликацией наборов ключевых словОбрезка начальных и конечных пробелов и пропуск пустых строк предотвращают появление ложных дубликатов от случайных табуляций при копировании-вставке. Это важно, когда исходный список из экспорта таблицы, где пустые строки и записи с отступами раздувают счётчик дубликатов. Повторный проход по очищенному списку с более строгими правилами обычно не находит новых совпадений — хороший сигнал, что нормализация сработала.

Технический принцип

Дедупликация — это однопроходное сканирование на основе JavaScript Set. ECMAScript Set использует алгоритм сравнения SameValueZero (то же сравнение, что и Array.prototype.includes, где NaN равен NaN, а +0 равен -0) и по спецификации обеспечивает сублинейный средний поиск — V8 реализует Set как хеш-таблицу с открытой адресацией с амортизированным O(1) для вставки, поэтому весь проход имеет сложность O(n) по количеству элементов. Наивная альтернатива — добавление в результирующий массив и вызов indexOf для каждого элемента — даёт O(n²) и становится ощутимой проблемой уже на 10 000 записей. Разбиение зависит от режима: построчный режим разделяет по /\r?\n/, обрабатывая как CRLF (Windows), так и LF (Unix) переносы строк, пословный — по /\s+/, по предложениям — по /(?<=[.!?])\s+/, по абзацам — по /\n{2,}/. Каждая единица проходит через опциональные нормализаторы перед тем, как стать ключом Set: trim() для удаления начальных и конечных пробелов, toLowerCase() для сравнения без учёта регистра и String.prototype.normalize('NFC'), чтобы визуально идентичные строки, записанные в составной (é, U+00E9) или разложенной (e + U+0301) форме, складывались в одну запись. Порядок сохраняется, поскольку результирующий массив строится в порядке итерации — Set используется только как фильтр «видел ли я это раньше?». Та же структура данных лежит в основе SQL DISTINCT и Python set(); единственная реальная альтернатива для десятков миллионов элементов — вероятностный фильтр Блума, который обменивает небольшую частоту ложных срабатываний (≈1% при 10 битах/элемент) на постоянную память и является избыточным для браузерного текстового инструмента.

  • Поиск Set использует алгоритм SameValueZero (ECMA-262 §7.2.10) — NaN совпадает с NaN, +0 совпадает с -0, в остальном строгое сравнение
  • V8 реализует Set как хеш-таблицу; insert и has имеют амортизированный O(1), что делает всю дедупликацию O(n) против O(n²) на основе indexOf
  • Построчный regex /\r?\n/ обрабатывает CRLF, LF и завершающий CR за одно разделение; без этого остаются невидимые суффиксы '\r', которые нарушают точное совпадение
  • Нормализация Unicode через String.prototype.normalize('NFC') сворачивает составные/разложенные формы (например, 'é' U+00E9 и 'e' + U+0301) в один ключ
  • Режим без учёта регистра приводит ключ к нижнему регистру — значение в оригинальном регистре сохраняется в выводе, поэтому первое 'ERROR' остаётся как есть, а последующие строки 'error' отбрасываются
  • Сохранение порядка бесплатно: результирующий массив строится в порядке ввода, а Set используется только как фильтр, поэтому поведение аналогично SQL DISTINCT со стабильной сортировкой
  • Для 10 млн+ элементов, где память становится узким местом, фильтр Блума (≈10 бит/элемент при 1% ложных срабатываний) заменяет Set — в браузере это не нужно, так как Set из 1 млн строк укладывается в 100 МБ

Примеры

Дедупликация строк, сохраняется первое вхождение

Вход:
apple
banana
apple
orange
banana

Выход:
apple
banana
orange

Дедупликация строк с обрезкой пробелов

Вход:
hello
  hello
hello 
world

Выход (после обрезки):
hello
world

Дедупликация без учёта регистра

Вход:
ERROR
error
Warning
WARNING
warning

Выход (без учёта регистра):
ERROR
Warning

Извлечение списка уникальных email-адресов

Вход:
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com

Выход (без учёта регистра, режим строк):
alice@example.com
bob@example.com
carol@example.com

Дедупликация слов

Вход: hello world hello again world

Выход: hello world again

Дедупликация предложений

Вход: This is a test. This is a test. Another sentence.

Выход: This is a test. Another sentence.

Часто задаваемые вопросы

Что считается дубликатом?

Каждая единица (строка, слово, предложение, абзац или символ) сравнивается с остальными. Идентичные единицы — дубликаты. Чувствительность к регистру включается отдельно. Страница выводит список без дубликатов и сообщает, сколько повторов было удалено.

Сохраняется ли порядок?

Да — первое вхождение каждого уникального элемента остаётся на своей исходной позиции, последующие дубликаты удаляются. В выводе сохраняется исходный порядок.

Считаются ли пустые строки дубликатами?

Пустые строки сравниваются как любые другие. Первая пустая строка остаётся; одинаковые пустые строки далее по тексту удаляются вместе с прочими дубликатами.

Можно ли дедуплицировать по подстроке или столбцу?

Нет. Дедупликация работает по полному содержимому каждой единицы (строки, слова, предложения, абзаца или символа). Режима по столбцам или подстрокам не предусмотрено.

Сортируется ли вывод?

Нет. Вывод всегда сохраняет исходный порядок. Опции сортировки нет.

Какого размера файл инструмент потянет?

Лимит — память браузера. Сотни тысяч строк нормально обрабатываются на десктопных браузерах. Файлы с миллионами строк могут не уместиться в памяти; для них используйте CLI-утилиты вроде `sort -u` или `awk '!seen[$0]++'`.

Загружается ли мой текст?

Нет. Дедупликация использует Set в памяти вашего браузера. Вставленные строки не передаются.

Похожие инструменты

Инструмент сравнения текста

Бесплатный онлайн-инструмент для сравнения текста с подсветкой различий. Построчное сравнение помогает быстро найти изменённые фрагменты.

Инструмент подсчета слов

Бесплатный онлайн-счётчик символов, слов, абзацев и времени чтения в реальном времени. Незаменимый помощник при написании статей, эссе и постов для соцсетей.

Конвертер регистра

Бесплатный онлайн-конвертер регистра: camelCase, snake_case, kebab-case, CONSTANT и другие форматы. Незаменим для разработчиков при переименовании переменных.

Инструмент тестирования регулярных выражений

Бесплатный онлайн-тестер регулярных выражений с мгновенным сопоставлением и подсветкой совпадений. Отлаживайте и проверяйте regex на ваших примерах.

Инструмент реверса строки

Бесплатный онлайн-инструмент для разворота строки: целиком, по словам или по строкам. Удобная обработка текста для самых разных задач прямо в браузере.

Удалить переносы строк

Бесплатный онлайн-инструмент для удаления переносов строк из текста. Поддержка удаления всех переносов, замены на пробелы, удаления пустых строк и слияния пустых строк. Работает локально в браузере.