Tekst

Text Diff

Porównanie dwóch tekstów wiersz po wierszu — co zostało dodane, usunięte lub zmienione, z podświetleniem na poziomie słów w zmienionych wierszach.


                        
                    

Text Diff compares two texts line by line and shows what was added, removed, or changed, with word-level highlighting inside changed lines — much like git diff, but without a command line.

How to use it

Common uses

Things to keep in mind

By default a whitespace-only change (like indentation) still counts as a difference, since it technically changes the line's content.

The diff compares lines by position, so adding or removing a single line near the top can shift how the rest of the text lines up.

Artykuł o tym narzędziu: Text Diff: jak algorytmy znajdują różnicę między dwoma tekstami

Najczęstsze pytania

Jak obliczane jest porównanie?

Porównanie odbywa się linia po linii: każda linia jest oznaczana jako dodana, usunięta lub zmieniona, a w zmienionych liniach podświetlane są dokładnie różniące się słowa.

Jak wyświetlane są dodania, usunięcia i zmiany?

Dodane i usunięte linie są odpowiednio oznaczone w wyniku, a zmienione linie pokazują podświetlenie na poziomie słów, aby od razu zobaczyć, co się zmieniło, bez ponownego czytania całej linii.

Czy oba moje teksty są wysyłane na serwer?

Nie, porównanie odbywa się całkowicie w przeglądarce w JavaScript — żadna treść nie jest nigdzie wysyłana.

Dlaczego wstawienie jednego wiersza pokazuje jako zmienione wszystkie kolejne?

Algorytm nie zawsze bezbłędnie rozpoznaje, że to właśnie wstawienie, a nie masowa zamiana — zwłaszcza jeśli sąsiednie wiersze są do siebie podobne. Dobre algorytmy diff starają się minimalizować takie fałszywe alarmy, szukając najdłuższego wspólnego podciągu, ale nie zawsze jest to idealne.

Czy spacje są uwzględniane przy porównywaniu?

Tak, domyślnie zmiana wyłącznie w białych znakach (np. wcięciach) również jest oznaczana jako różnica, ponieważ technicznie jest to zmiana zawartości wiersza.

Artykuły: Tekst

Case Converter: po co istnieją różne style nazewnictwa

Dlaczego w jednym projekcie zmienne zapisuje się camelCase, a pliki kebab-case, i skąd wzięły się te zasady.

Wyrażenia regularne: podstawowa składnia i typowe wzorce

Jak czytać wyrażenie regularne i czym dopasowanie zachłanne różni się od leniwego.

Sortowanie i usuwanie duplikatów wierszy: do czego się przydaje

Dlaczego sortowanie numeryczne stawiające „10" przed „9" jest błędem, i jak tego uniknąć.

String Escape: dlaczego ten sam tekst trzeba escapować inaczej

Dlaczego ten sam cudzysłów jest escapowany inaczej w ciągu JS, w JSON i w poleceniu shell.

CRLF kontra LF: dlaczego znaki końca linii wciąż mają znaczenie

Dlaczego plik napisany w Windows może wyglądać jako „cały zmieniony" w gicie na Linuksie.

Liczenie znaków i słów: dlaczego to nie zawsze jest trywialne

Dlaczego emoji lub litera z akcentem może liczyć się jako kilka znaków naraz.

Lorem Ipsum: skąd wziął się tekst zastępczy i po co jest potrzebny

Dlaczego projektanci celowo używają „bezsensownego" tekstu zamiast prawdziwej treści w makietach.

Slugify: jak zamienić dowolny tekst w adres URL

Jak tytuł „Witaj, Świecie! Jak się masz?" zamienia się w kompatybilny z URL ciąg witaj-swiecie-jak-sie-masz.

Markdown: dlaczego prosta składnia tekstowa pokonała rozbudowane edytory

Dlaczego programiści wolą pisać dokumentację w Markdown niż w edytorze tekstu sformatowanego.

Spacje i niewidoczne znaki: ukryta przyczyna dziwnych błędów

Dlaczego dwa pozornie identyczne ciągi znaków mogą się nie zgadzać przez niewidoczny znak.

Text Reverse: dlaczego „odwrócenie tekstu" jest trudniejsze, niż się wydaje

Dlaczego naiwne odwrócenie ciągu znaków może zamienić emoji w nieużyteczne bajty.

Analiza częstotliwości tekstu: po co liczyć powtórzenia słów

Jak częstotliwość liter w zaszyfrowanym tekście pomaga złamać najprostsze szyfry podstawieniowe.