Textvergleich (Diff-Prüfung)
Fügen Sie zwei Texte ein und sehen Sie genau, welche Zeilen hinzugefügt, entfernt oder unverändert wurden — ein übersichtlicher zeilenweiser Vergleich in Ihrem Browser.
1.140 Aufrufe
So funktioniert der Vergleich
Das Werkzeug teilt beide Texte in Zeilen auf und führt einen Algorithmus für die längste gemeinsame Teilfolge (Longest Common Subsequence, LCS) aus — dieselbe Kernlogik, die Git und Code-Editoren für ihre "Diff"-Ansicht verwenden. Statt Zeilen nach Position zu vergleichen (Zeile 1 gegen Zeile 1, Zeile 2 gegen Zeile 2), findet LCS die längste Zeilenfolge, die in derselben Reihenfolge in beiden Dokumenten vorkommt. Alles innerhalb dieser gemeinsamen Folge wird als unverändert markiert; was im Original übrig bleibt, wird als entfernt markiert, und was im überarbeiteten Text übrig bleibt, wird als hinzugefügt markiert.
Dieser Unterschied ist wichtig, weil ein naiver positionsbasierter Vergleich in dem Moment scheitert, in dem eine einzelne Zeile am Anfang eines Dokuments eingefügt oder gelöscht wird — jede nachfolgende Zeile würde dann als abweichend erscheinen, obwohl sich tatsächlich nur diese eine Zeile geändert hat. Konkretes Beispiel: Steht im Original "A / B / C / D" und im überarbeiteten Text "A / X / B / C / D", würde ein einfacher zeilenweiser Vergleich B, C und D allesamt als geändert markieren, da sie jeweils um eine Position nach unten gerutscht sind. LCS erkennt dagegen, dass A, B, C und D in beiden Texten weiterhin in derselben relativen Reihenfolge vorkommen, und meldet korrekt nur eine einzige Ergänzung — die neue Zeile X —, während der Rest als unverändert markiert bleibt.
Was Sie wissen sollten
- Zeilenbasiert, nicht wortbasiert: Der Vergleich arbeitet mit ganzen Zeilen. Wird ein einzelnes Wort innerhalb einer langen Zeile geändert, markiert das Werkzeug trotzdem die gesamte Zeile als eine entfernte plus eine hinzugefügte Zeile — die übliche Konvention beim Vergleich von Code und Dokumenten, da sie das Ergebnis übersichtlich hält.
- Leerzeichen und Groß-/Kleinschreibung zählen: Ein nachgestelltes Leerzeichen oder eine andere Groß-/Kleinschreibung lässt zwei sonst identische Zeilen als unterschiedlich erscheinen — es lohnt sich, den Text vorher zu normalisieren, wenn das nicht der gewünschte Vergleich ist.
- Verschobene Inhalte werden korrekt erkannt: Da LCS nach der längsten gemeinsamen Folge sucht statt nach exakten Positionen, wird ein Absatz, der an eine andere Stelle verschoben wurde, aber seine interne Zeilenreihenfolge beibehalten hat, als unverändert erkannt statt als Lösch-und-Einfüge-Paar.
- Große Dokumente sind kein Problem: Der Algorithmus verarbeitet mühelos Tausende von Zeilen; bei extrem großen Dateien (Zehntausende von Zeilen) kann der Browser für die Ausrichtung einen Moment länger brauchen, aber es wird nie etwas hochgeladen — die Berechnung bleibt jederzeit lokal.
Dieselbe Technik liegt auch der "Änderungen nachverfolgen"-Prüfung außerhalb der Programmierung zugrunde: ein Rechtsteam, das zwei Entwürfe einer Vertragsklausel vergleicht, ein Lektor, der genau prüft, was ein Koautor in einem Kapitel umgeschrieben hat, oder ein Übersetzer, der bestätigt, welche Sätze sich zwischen zwei lokalisierten Versionen eines Dokuments verschoben haben. Da der Algorithmus nur auf die Reihenfolge der Zeilen achtet, nicht auf ihre Bedeutung, funktioniert er ebenso gut bei Quellcode, Konfigurationsdateien, Gedichten oder einer als Klartext exportierten Tabellenkalkulation.
Häufig gestellte Fragen
Vergleicht es Wort für Wort oder Zeile für Zeile?
Zeile für Zeile — der Standard für Dokumente und Code, da dies der Arbeitsweise der meisten Editoren und Versionskontrollwerkzeuge entspricht. Eine geänderte Zeile erscheint daher als eine entfernte plus eine hinzugefügte Zeile statt als Gewirr von Hervorhebungen auf Wortebene, was das Ergebnis auch in langen Dokumenten übersichtlich hält.
Gibt es eine Größenbeschränkung?
Der Algorithmus verarbeitet mühelos Tausende von Zeilen, was die große Mehrheit von Verträgen, Artikeln und Quelldateien abdeckt. Bei sehr großen Dateien (Zehntausende von Zeilen) kann der Browser für die Berechnung der Ausrichtung einen Moment länger brauchen — die Arbeit bleibt in jedem Fall vollständig auf Ihrem Gerät, sodass keine Wartezeit durch einen Upload entsteht.
Werden meine Dokumente hochgeladen?
Nein. Beide Texte werden lokal in Ihrem Browser mit JavaScript verglichen, und sowohl die Eingabe als auch das Ergebnis verschwinden in dem Moment, in dem Sie die Seite schließen oder neu laden — nichts wird gespeichert oder übertragen.
Wie werden verschobene oder neu angeordnete Zeilen behandelt?
Da der LCS-Algorithmus die längste gemeinsame Folge beider Texte unabhängig von der Position abgleicht, wird ein Absatz, der verschoben wurde, aber seine interne Zeilenreihenfolge beibehalten hat, weiterhin als unverändert angezeigt statt als falsches Lösch-und-Einfüge-Paar. Nur Zeilen, die sich tatsächlich in Inhalt oder relativer Position unterscheiden, werden markiert.
Warum zeigt die Änderung eines einzigen Wortes zwei geänderte Zeilen an?
Der Diff vergleicht ganze Zeilen, nicht einzelne Wörter. Das Bearbeiten eines Wortes innerhalb einer Zeile lässt die gesamte Zeile als eine entfernte Zeile (die alte Version) plus eine hinzugefügte Zeile (die neue Version) zählen — dasselbe Verhalten, das Sie auch in Git oder Code-Review-Tools sehen; es hält das visuelle Ergebnis konsistent, egal wie klein die Änderung innerhalb der Zeile war.
Ähnliche Tools
Problem melden
Textvergleich (Diff-Prüfung)
Kommentare
Noch keine Kommentare — schreiben Sie den ersten!