Zeilen-Sortierer & Duplikat-Entferner

Sortieren Sie Textzeilen von A bis Z oder Z bis A, entfernen Sie doppelte und leere Zeilen und korrigieren Sie die natürliche Zahlenreihenfolge, sodass item2 vor item10 steht — alles sofort im Browser.

217 Aufrufe

Warum „item10" bei einer einfachen alphabetischen Sortierung vor „item2" steht

Eine Standardsortierung — wie sie hinter der Methode Array.sort() in JavaScript oder der A→Z-Schaltfläche in einer Tabellenkalkulation steckt — vergleicht zwei Zeilen Zeichen für Zeichen von links nach rechts anhand des Unicode-Codepunkts jedes einzelnen Zeichens. Sie betrachtet eine Folge von Ziffern nicht als zusammenhängende Zahl, sondern prüft immer nur, ob ein Zeichen kleiner oder größer ist als ein anderes — Position für Position. Deshalb sortiert eine Liste mit item1, item2, item9, item10 und item20 zeichenweise als item1, item10, item2, item20, item9: Vergleicht man „item10" und „item2" Buchstabe für Buchstabe, sind die Zeichenketten bis „item" identisch, und das nächste Zeichen entscheidet alles — „1" gegen „2". Da das Zeichen „1" kleiner ist als das Zeichen „2", steht item10 vor item2, obwohl zehn zahlenmäßig größer ist als zwei. Jede Liste, in der Zahlen innerhalb von Text vorkommen, leidet darunter: Versionsnummern, Dateinamen wie image2.jpg und image10.jpg, Rechnungsnummern und Schritt-für-Schritt-Anleitungen.

Die natürliche Sortierung — auch numerische Sortierung genannt — behebt dieses Problem, indem sie eine Folge aufeinanderfolgender Ziffern als eine einzelne Zahl erkennt und deren Wert vergleicht, statt Ziffer für Ziffer vorzugehen. Die Option „natürliche Sortierung" in diesem Tool überlässt diese Logik der im Browser eingebauten Intl-API und führt für jedes Zeilenpaar a.localeCompare(b, undefined, {numeric: true, sensitivity: "base"}) aus. Das Flag numeric:true weist den Vergleich an, Ziffernfolgen zu erkennen und als Zahlen zu behandeln, sodass item2 korrekt vor item10 und item9 vor item20 landet — die Reihenfolge, die ein Mensch beim Lesen der Liste erwarten würde, nicht die Reihenfolge, die ein zeichenweiser Vergleich erzeugt.

Sprachbewusster Vergleich statt reiner Zeichencodes

Die alphabetische Reihenfolge hängt außerdem davon ab, welche Sprachregeln angewendet werden, und genau hier scheitert ein einfacher Vergleich selbst dann, wenn gar keine Zahlen im Spiel sind. Im Englischen sind „a" und „A" derselbe Buchstabe in zwei Schreibweisen, und akzentuierte Buchstaben wie é werden meist nahe bei e einsortiert. Im Türkischen dagegen gelten „ı" (i ohne Punkt) und „i" (i mit Punkt) als zwei getrennte Buchstaben mit jeweils eigener Position im Alphabet — eine Unterscheidung, die ein reiner Codepunkt-Vergleich, der nur numerische Unicode-Werte prüft, unmöglich kennen kann. localeCompare, dieselbe Intl-Methode, die auch hinter der Option „natürliche Sortierung" steckt, berücksichtigt Sprachregeln: Mit sensitivity: "base" behandelt sie Groß-/Kleinschreibung und Akzentunterschiede für die Sortierung als gleichwertig, respektiert aber weiterhin die tatsächliche Buchstabenreihenfolge jedes Alphabets — ob Englisch, Türkisch, Deutsch oder eine andere Sprache mit lateinischer Schrift.

Dieses Tool vereint beide Aspekte in einem Arbeitsschritt: Wählen Sie alphabetisch A→Z oder Z→A als Grundreihenfolge, legen Sie optional die natürliche numerische Sortierung darüber, damit eingebettete Zahlen nach ihrem Wert statt nach Ziffern verglichen werden, und entfernen Sie anschließend optional doppelte Zeilen, leere Zeilen sowie führende oder abschließende Leerzeichen. Da die Duplikaterkennung Zeilen als exakte Zeichenketten vergleicht, spielt das Trimmen eine wichtige Rolle: „apple" und „apple " (mit einem Leerzeichen am Ende) sehen für eine Duplikatprüfung unterschiedlich aus, solange das abschließende Leerzeichen nicht zuvor entfernt wurde — deshalb sind die Optionen zum Trimmen und Entfernen von Duplikaten so konzipiert, dass sie zusammenarbeiten, statt unabhängige Schalter zu sein.

Häufig gestellte Fragen

Warum erscheint „item10" vor „item2", wenn ich meine Liste sortiere?

Weil eine einfache alphabetische Sortierung Text zeichenweise vergleicht, statt Ziffernfolgen als ganze Zahlen zu behandeln — das Zeichen „1" ist kleiner als „2", also gewinnt item10 diesen einzelnen Positionsvergleich, obwohl zehn größer ist als zwei. Aktivieren Sie die natürliche bzw. numerische Sortierung, um das zu beheben: Sie erkennt aufeinanderfolgende Ziffern als eine Zahl und vergleicht die Größe statt einzelner Zeichen.

Was genau zählt als „Duplikat"-Zeile?

Zwei Zeilen gelten nur dann als Duplikate, wenn sie exakt übereinstimmen — Zeichen für Zeichen, einschließlich Groß-/Kleinschreibung und führender oder abschließender Leerzeichen. „Apple" und „apple" werden als unterschiedliche Zeilen behandelt, ebenso „banana" und „banana " mit einem Leerzeichen am Ende. Aktivieren Sie die Trimm-Option, bevor Sie Duplikate entfernen, wenn Leerzeichen-Unterschiede ignoriert werden sollen.

Ändert das Trimmen von Leerzeichen, wie viele Duplikate entfernt werden?

Ja. Wenn sich zwei ansonsten identische Zeilen nur durch führende oder abschließende Leerzeichen unterscheiden, gelten sie bis zum Trimmen als separate Zeilen. Die Option „Führende und abschließende Leerzeichen trimmen" normalisiert beide Zeilen, bevor die Duplikatprüfung läuft, sodass diese nahezu identischen Zeilen zu einer verschmelzen.

Ist localeCompare zuverlässig für die Sortierung nicht-englischer Texte, etwa Türkisch oder Deutsch?

Ja — localeCompare ist eine im Browser eingebaute Funktion, die speziell für sprachlich korrekte Sortierung entwickelt wurde. Sie weiß, dass das Türkische zwischen punktiertem „i" und punktlosem „ı" als getrennten Buchstaben unterscheidet, und behandelt akzentuierte Zeichen in der Regel so, wie es ein Leser dieser Sprache erwarten würde — etwas, das ein einfacher Kleiner-als-Vergleich auf Basis roher Unicode-Codepunkte nicht leisten kann.

Lädt oder speichert dieses Tool meinen Text irgendwo?

Nein — alles läuft lokal im Browser mit JavaScript ab; die Zeilen werden niemals an einen Server gesendet, protokolliert oder gespeichert. Ein Aktualisieren oder Schließen des Tabs löscht die Eingabe vollständig.

Kommentare

Noch keine Kommentare — schreiben Sie den ersten!

Ähnliche Tools