Editly

Безкоштовне порівняння тексту, JSON і CSV

Порівняй текст, JSON або CSV прямо в браузері. Звичайний текст зіставляється рядок за рядком, а змінені слова підсвічуються всередині рядка; JSON порівнюється як дані, тож порядок ключів і відступи не мають значення; CSV зводиться рядок за рядком і стовпець за стовпцем, тож один доданий стовпець більше не позначає зміненим кожне поле. Вибирай вигляд поряд, в один стовпець або в тексті, підсвітку за словами чи за символами, і вимикай те, що тебе не цікавить: пробіли, регістр, типографські лапки. Нічого не вивантажується — порівняння виконується на твоїй же машині.

Інструмент порівняння

Порівнювати як
Оригінал

Встав, введи або перетягни файл сюди.

Нова версія

Встав, введи або перетягни файл сюди.

Що насправді робить diff — і чому формат має значення

Diff шукає найменший набір правок, який перетворює одну версію на іншу. Тут працює алгоритм Майєрса — з того самого сімейства, що стоїть за git diff — у варіанті з лінійною памʼяттю, тож обсяг роботи залежить від того, наскільки версії різні, а не від того, які вони довгі: дві майже однакові чернетки порівнюються за один прохід, хай там 500 слів чи 100 000. Але самого алгоритму мало, бо те, що вважати різницею, повністю залежить від того, що ти порівнюєш. Переставлені ключі важливі в прозі й нічого не означають у JSON. Доданий стовпець зсуває кожне поле в CSV і нічого не змінює в самих даних. Саме тому тут три режими, а не один — щоб порівняти текст як слід, потрібне не те саме, що для зведення двох CSV-експортів.

  • Звичайний текст порівнюється двічі: спершу зіставляються рядки, а потім тільки ті рядки, що змінилися, порівнюються повторно — уже за словами. Чистий порядковий diff позначив би цілий абзац зміненим через один переставлений прикметник; чистий послівний diff по всьому документу втратив би структуру рядків, на якій тримається вирівнювання двох панелей. Разом вони дають і вирівняні панелі, і підсвітку, достатньо точну, щоб показати єдине виправлене слово.

  • JSON порівнюється як дані, а не як текст: обидві сторони розбираються парсером, а далі зіставляються структурно. Порядок ключів і відступи не враховуються, тож перезаписаний файл читається як ідентичний; порядок масиву зберігається, бо в JSON порядок елементів масиву — це дані. Кожна різниця показується за повним шляхом — $.limits.maxWords, а не «рядок 6» — а значення, яке зі "5" стало 5, позначається саме як зміна типу.

  • CSV зводиться за рядками й за стовпцями: обидва файли розбираються за RFC 4180, тож коми та переноси рядків усередині лапок не ламають розбір, а розділювач (кома, точка з комою, табуляція чи вертикальна риска) визначається з самих даних. Стовпці зіставляються за назвою в заголовку, тож переставлений або новий стовпець позначається один раз на рівні стовпця, а не як зміна в кожному рядку. Рядки можна зіставляти за позицією або за стовпцем-ключем — саме так порівнюють два експорти, у яких рядки відсортовані по-різному.

  • Підсвітка за словами або за символами, і вона знає про графеми: символьний режим порівнює графемні кластери, а не кодові одиниці UTF-16, тож емодзі сімʼї чи прапор залишаються одним символом, а не розпадаються на квадратики й чотири «зміни». Послівний режим спирається на Intl.Segmenter, а не на розбиття по пробілах — саме це дозволяє ізолювати правку всередині китайського чи японського речення до одного слова, а не підсвічувати весь рядок.

  • Різниці, які можна не показувати: символи кінця рядка нормалізуються завжди — файл із Windows і його копія з Unix це один і той самий текст, а не 400 змінених рядків. Пробіли, регістр і підмінену пунктуацію вимикають галочками, і це відповідь на найчастішу претензію до diff-інструментів: два документи виглядають на екрані однаково, а показуються як цілком різні, бо Word підмінив кожен апостроф кривими лапками.

  • Приватно і не на головному потоці: нічого не вивантажується і не потрібен акаунт. Уся робота відбувається у Web Worker у твоїй же вкладці, тож рукопис на 100 000 слів не підвішує поле введення, поки триває обчислення. А конфіденційний договір, невиданий рукопис чи експорт клієнтської бази взагалі не покидають твою машину — цього серверний diff-сервіс тобі запропонувати не може.

Як користуватися порівнянням

  1. 1

    Вибери, що саме порівнюєш: текст, JSON або CSV. Якщо в обох полях лежить той самий розпізнаваний формат, інструмент сам запропонує потрібний режим — натисни підсказку, щоб перемкнутися, або просто залишся в текстовому режимі.

  2. 2

    Встав оригінал у ліве поле, а нову версію — у праве. Або перетягни файл .txt, .md, .json чи .csv на будь-яке з полів: за розширенням режим виставиться автоматично.

  3. 3

    Читай результат. Вигляд «Поряд» ставить версії одна проти одної рядок у рядок і підсвічує змінені слова всередині рядка. «Один стовпець» дає класичний вигляд з мінусами й плюсами — той, що вставляється в код-ревʼю. «У тексті» зводить обидві версії в один потік, який можна читати як звичайний текст.

  4. 4

    Звужуй пошук. Перемкни підсвітку на «За символами», коли правка сидить усередині слова, і постав галочки «Ігнорувати пробіли», «Ігнорувати регістр» чи «Ігнорувати лапки й тире», щоб прибрати різниці, які тебе не цікавлять.

  5. 5

    Забери результат із собою. «Копіювати як патч» дає стандартний уніфікований diff; у режимі JSON «Копіювати зміни» дає по рядку на кожен змінений шлях; у режимі CSV «Копіювати звіт про зміни» дає готовий для таблиці список усіх змінених клітинок.

Часті питання

Також спробуйте Лічильник слів для отримання повної статистики читабельності та щільності ключових слів для того самого тексту.

Матеріали до теми

Порівняй текст, JSON або CSV — результат зʼявляється, поки ти друкуєш.