ToolActToolAct

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

Исходный текстOLD
1
Новый текстNEW
1
0 строк добавлено0 строк удалено
UTF-8

Что такое сравнение текста?

Text Diff сравнивает две версии текста и подсвечивает строки или фрагменты, которые были добавлены, удалены, изменены или остались прежними. Он полезен при проверке кода, конфигураций, переводов, черновиков договоров, Markdown-документов, версий промптов, заметок к релизу и фрагментов логов, когда неудобно читать две копии вручную. Инструмент особенно ценен, если маленькая правка спрятана в длинном тексте или если могли случайно измениться пробелы, пунктуация, форматирование либо порядок строк. Diff не решает, правильна ли новая версия; он точно показывает различия, чтобы ревью было сосредоточенным. Это снижает риск пропустить важную мелочь. Для опубликованного или многоязычного контента результат нужно проверить по языку, charset, контексту и edge cases.

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

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

  1. Вставьте исходный текст в левое поле ввода
  2. Вставьте изменённый текст в правое поле ввода
  3. Система автоматически вычислит и подсветит различия, а в строке состояния отобразится количество добавленных и удалённых строк

Рекомендации по проверке

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

Применение

Построчное сравнение двух версий текстаВставьте исходный и изменённый текст в редакторы рядом — инструмент вычисляет построчное сравнение на основе динамического программирования с расстоянием редактирования. Добавленные строки подсвечены справа, удалённые — слева. Строка статуса показывает количество добавленных и удалённых строк, чтобы ревьюер сразу видел масштаб изменений.
Проверка небольших правок без полного Git-workflowПанели старого и нового текста включают номера строк, кнопки очистки и вставки, а также счётчики добавленных и удалённых строк. Это удобно для сравнения переводов, фрагментов конфигураций, сгенерированного текста или скопированных заметок вне репозитория. Быстрые сравнения в браузере удерживают фокус ревьюера на содержимом, а не на истории коммитов.
Быстрое обнаружение структурных измененийПоскольку сравнение работает на уровне строк, оно выделяет вставленные и удалённые строки, а не опечатки на уровне символов. Это лучше всего подходит для абзацев, списков, JSON-фрагментов, разделов документации и многострочного вывода. Для символьной вычитки дополните результат отдельным символьным сравнением или проверкой орфографии.
Проверка изменений промптов и конфигураций перед слияниемВставьте предыдущий и новый промпт в две панели, чтобы увидеть, какие строки были добавлены, удалены или переставлены. Это быстрее, чем перечитывать весь текст, когда между версиями изменились только температура, системное сообщение или блок инструкций. Построчный просмотр ловит случайные перемещения разделов, которые сравнение по количеству слов пропустило бы.
Аудит сравнений на основе алгоритма Myers и LCSПод капотом движок сравнения запускает алгоритм Myers O(ND) на основе наибольшей общей подпоследовательности (LCS) для построения скрипта редактирования, затем применяет семантическую очистку, чтобы сдвиги границ слов (например, предложение, разбитое на две строки) сворачивались в одну изменённую строку вместо двух соседних красно-зелёных блоков. Результат по-прежнему читается как обычное построчное сравнение, но на основе LCS отображается минимально возможный набор правок.

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

Построчное сравнение основано на задаче о наибольшей общей подпоследовательности (LCS): даны две последовательности строк A и B, найти самую длинную последовательность, которая встречается в обеих в том же относительном порядке. Всё, что не входит в LCS, является либо вставкой (есть в B, но нет в A), либо удалением (есть в A, но нет в B), — именно эти строки отображаются красным и зелёным в боковом обзоре. Наивная таблица динамического программирования для LCS работает за время и память O(M × N), где M и N — количество строк в двух входных данных. На практике движок сравнения использует алгоритм Майерса (Eugene Myers, 1986), который решает ту же задачу за O((M + N) × D) времени, где D — расстояние редактирования между двумя файлами. Для двух файлов, которые в основном идентичны, D невелико, и алгоритм Майерса значительно быстрее полной таблицы ДП; внутренний механизм сравнения Git, веб-интерфейс diff на GitHub и большинство панелей сравнения в IDE используют алгоритм Майерса или один из его потомков (patience diff, histogram diff) именно по этой причине. Patience diff дополнительно выравнивает по уникально встречающимся строкам, что даёт более читаемые блоки при перемещении участков кода. Выход — это последовательность операций equal/insert/delete, отображаемых как unified diff в CLI-инструментах (с заголовками блоков @@ -m,n +p,q @@ и одним префиксом +/- на строку) или как боковые окрашенные строки в веб-интерфейсе. Сравнение на уровне символов или слов использует тот же алгоритм на более мелкой последовательности, часто в сочетании с расстоянием Левенштейна (стоимость вставки + удаления + замены), когда замены нужно считать как одну операцию. Библиотека diff-match-patch от Neil Fraser является стандартной справочной реализацией для посимвольного сравнения в вебе.

  • Основа LCS: наибольшая общая подпоследовательность двух массивов строк определяет неизменённые строки; всё остальное — вставка или удаление
  • Алгоритм Майерса (1986): O((M + N) × D) времени, где D — расстояние редактирования; используется по умолчанию в Git, GitHub и большинстве IDE
  • Наивное ДП: O(M × N) по времени и памяти — подходит для небольших входов, но квадратичная память делает его непрактичным для больших файлов
  • Patience diff: выравнивает по уникально встречающимся строкам; даёт более чистые блоки при перемещении или переупорядочивании участков
  • Форматы вывода: unified diff с заголовками @@ -m,n +p,q @@ для CLI; боковые окрашенные строки для веб-интерфейса
  • Гранулярность: построчное / пословное / посимвольное сравнение применяет тот же алгоритм к разному разбиению входных данных
  • Расстояние Левенштейна: считает вставки + удаления + замены; diff-match-patch — справочная веб-библиотека

Примеры

Обнаружение изменения одного слова внутри абзаца

Оригинал:
  The server starts on port 3000 by default.

Изменённый:
  The server starts on port 8080 by default.

Результат: 1 строка изменена (3000 -> 8080)

Сравнение двух версий блока конфигурации

Оригинал:                       Изменённый:
  timeout: 30                     timeout: 60
  retries: 3                      retries: 3
  debug: false                    debug: true
                                  log_level: info

Результат: добавлено 2 строки, удалено 2 строки

Сравнение примечаний к выпуску до и после

Удалено (красный):
  - Fixed login redirect on Safari 16

Добавлено (зелёный):
  - Fixed login redirect on Safari 16 and 17
  - Added dark mode preference sync

Результат: добавлено 2 строки, удалена 1 строка

Обнаружение переупорядоченных ключей JSON

Оригинал:                       Изменённый:
  { "name": "alice",              { "id": 1,
    "id": 1,                        "name": "alice",
    "role": "admin" }               "role": "admin" }

Результат: 2 строки изменены (порядок ключей различается, значения идентичны)

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

Какой тип сравнения он показывает?

Построчное сравнение. Страница показывает две панели рядом: удалённые строки выделены красным слева, добавленные — зелёным справа. Номера строк помогают находить изменения. Строка состояния показывает количество добавленных и удалённых строк.

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

Страница применяет алгоритм Longest Common Subsequence (LCS) для построения скрипта правок на уровне строк. Для типичных размеров документов он работает в реальном времени по мере ввода. Алгоритм находит кратчайшую последовательность вставок и удалений, превращающую левый текст в правый.

Почему сравнение выглядит иначе, чем в git diff?

У Git своя реализация diff с настраиваемыми алгоритмами. Эта страница использует JavaScript-сравнение на основе LCS, работающее полностью в браузере. Формат вывода и границы хунков могут немного отличаться от git diff, но сама детекция изменений на уровне строк корректна.

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

Да — вставьте каждую версию в свою сторону. На странице есть и подсветка изменений на уровне символов внутри изменённых строк — благодаря ей переименование «foo to bar» отображается как inline-замена, а не как два независимых изменения.

Игнорирует ли он пробелы?

Нет. По умолчанию сравнение чувствительно к пробельным символам. Различия в пробелах (висячие пробелы, лишние пустые строки, разные окончания строк) показываются как изменения.

Можно ли сравнивать JSON или XML структурно?

Текстовый diff работает построчно. Для сравнения JSON по ключам (ключ «a» переехал с позиции 1 на 3 с тем же значением — это не изменение) используйте JSON-aware-инструменты (jsondiffpatch, json-diff). Эта страница — для текстового сравнения.

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

Нет. Сравнение выполняется в браузере. Оба ввода обрабатываются локально и никуда не передаются.

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

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

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

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

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

Инструмент дедупликации текста

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

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

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

Markdown-редактор

Бесплатный онлайн-редактор Markdown с предпросмотром в реальном времени, подсветкой синтаксиса и экспортом в HTML. Поддерживает таблицы, блоки кода и диаграммы.

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.