Text Reverser
Reverse text by characters, words or lines.
Geprüft von Aygul Dovletova · Zuletzt geprüft
So verwendest du das Text-Umkehr-Werkzeug
- Text einfügen oder eintippen in den Eingabebereich. Jede Mischung aus ASCII, Unicode-Buchstaben, Emoji oder Leerzeichen funktioniert.
- Eine Umkehrgranularität wählen mit den drei Schaltflächen: Zeichen umkehren kippt die Reihenfolge der Graphem-Cluster, Wörter umkehren behält die Wörter intakt, kehrt aber ihre Reihenfolge um, Zeilen umkehren kippt die Reihenfolge der Zeilen in mehrzeiliger Eingabe.
- Die Ausgabe lesen, die sich sofort aktualisiert. Der Eingabe-Textbereich wird nie verändert, sodass man alle drei Schaltflächen nacheinander ausprobieren kann.
- Das Ergebnis kopieren mit der Kopier-Schaltfläche. Der umgekehrte Text befindet sich in der Zwischenablage, bereit zum Einfügen in einen Chat, Editor oder die Kommandozeile.
- Zur Verifikation erneut umkehren - denselben Modus zweimal anwenden sollte den Originaltext erzeugen, was eine schnelle Plausibilitätsprüfung ist.
Wie die Umkehrung tatsächlich durchgeführt wird
Ein naives str.split('').reverse().join('') bricht Unicode: es teilt an UTF-16-Code-Einheiten auf, sodass ein Supplementarebenen-Emoji, das aus einem Surrogatpaar besteht, mit vertauschten Hälften endet und ungültige Sequenzen produziert. Dieses Werkzeug verwendet Array.from(str) für die Zeichenumkehrung, das über Unicode-Skalawerte iteriert und Surrogatpaare atomar hält. Noch besser: für Graphem-Cluster-Genauigkeit fällt es auf Intl.Segmenter zurück, wenn verfügbar, was ZWJ-verbundene Emoji-Familien, Flaggensequenzen und kombinierende Zeichen als einzelne Einheiten korrekt behandelt. Die Wortumkehrung teilt nach /\\s+/ auf und fügt mit einem einzigen Leerzeichen zusammen, was mehrere Leerzeichen fasst, aber die Wortintegrität bewahrt. Die Zeilenumkehrung teilt nach \\r?\\n auf und fügt mit dem OS-angemessenen \\n zusammen. Alles läuft synchron im Browser-Tab.
Wann man es verwendet
- Ein Rätsel oder Quiz schreiben, bei dem die Antwort rückwärts buchstabiert ist (ein klassisches Radio-Triviaformat).
- Palindrom-Kandidaten generieren, indem man ein Wort umkehrt und prüft, ob das Ergebnis mit dem Original übereinstimmt.
- Ein neuestes-zuerst-Chatprotokoll mit "Zeilen umkehren" in neuestes-zuletzt umordnen, bevor man es in ein Analyse-Skript einspeist.
- Testeingaben für den eigenen Code vorbereiten: verarbeitet die Funktion umgekehrte Emojis korrekt? Einfügen und prüfen.
- Ein Spiegel-Banner in einem ASCII-Kunst-README erstellen, das erfordert, dass jede Zeile von rechts nach links gelesen wird.
- Umgekehrte-Präfix-Zeichenketten für unscharfe Suchindizes generieren, bei denen Suffix-Abfragen nach der Umkehrung zu Präfix-Abfragen werden.
Häufige Fallstricke und Sonderfälle
- Emojis mit ZWJ-Sequenzen. Das Familien-Emoji sind vier Personen, verbunden durch U+200D-Zeichen. Ein naiver Umkehrer streut die Teile; dieses Werkzeug bewahrt den Cluster, sodass das Emoji nach der Umkehrung korrekt gerendert wird.
- Kombinierende Akzente. Ein Zeichen wie é kann als einzelner Codepunkt U+00E9 oder als e gefolgt von kombinierendem Akut U+0301 kodiert sein. Die Zeichenumkehrung sollte sie gepaart halten; der Graphem-Cluster-Modus via Intl.Segmenter tut das, der Codepunkt-Modus via Array.from nicht.
- RTL-Schriften. Das Umkehren von arabischem oder hebräischem Text erzeugt visuell bizarres Ergebnis, weil diese Schriften bereits von rechts nach links gerendert werden. Die logische Umkehrung ist immer noch eine andere Zeichenkette, aber das visuelle Ergebnis hängt stark vom Bidi-Algorithmus des Browsers ab.
- Mehrzeilige Eingabe mit "Wörter umkehren". Der Standard teilt nach beliebigen Leerzeichen einschließlich Zeilenumbrüchen auf, sodass die mehrzeilige Eingabe nach der Umkehrung eine einzelne Zeile wird. Zuerst "Zeilen umkehren" verwenden, wenn die Zeilenstruktur erhalten bleiben soll.
- Leerzeichen-Faltung. Wortumkehrung fügt mit einem einzigen Leerzeichen zusammen und verliert doppelte Leerzeichen oder Tab-basierte Ausrichtung. Zeichenumkehrung bewahrt jedes Leerzeichen-Zeichen genau.
- HTML oder Markdown-Syntax. Das Umkehren von
<b>fett</b>ergibt>b/<ttef>b<, was Unsinn ist. Nur auf reinen Textinhalt umkehren, nicht auf Markup.
Hintergrund zu Graphem-Clustern
Unicode unterscheidet drei Ebenen von "Zeichen": das Byte (wie Daten gespeichert werden), den Codepunkt (ein Unicode-Skalawert von U+0000 bis U+10FFFF) und den Graphem-Cluster (was ein Benutzer als ein Zeichen wahrnimmt). Ein Graphem-Cluster kann mehrere Codepunkte kombinieren: einen Basisbuchstaben plus kombinierende Zeichen, ein Regionalkennzeichenpaar, das eine Flagge bildet, ein Emoji mit Hauttonsmodifikator oder eine ZWJ-Sequenz, die ein zusammengesetztes Emoji aufbaut. Unicode Standard Annex #29 definiert die Regeln für erweiterte Graphem-Cluster-Grenzen, und Browser stellen die Logik über Intl.Segmenter bereit (ECMA-402 Stage 4, ausgeliefert seit 2022). JavaScripts string.length, indizierten Zugriff und split('') arbeiten alle auf der UTF-16-Code-Einheitsebene, weshalb Legacy-Text-Manipulations-Code so häufig bei Emojis bricht.
Vergleich zu Alternativen
Auf der Kommandozeile kehrt rev datei jede Zeile auf Byte-Ebene um - schnell, aber für alles jenseits von ASCII völlig Unicode-unsicher. awk- und perl-Einzeiler können besser abschneiden, wenn man explizit einen Unicode-bewussten Split aufruft, aber der Code ist umständlich. Pythons text[::-1] kehrt nach Codepunkt um (äquivalent zu Array.from, dann umkehren), was grundlegende Emojis verarbeitet, aber keine ZWJ-Sequenzen. Das regex-Paket in Python und die unicode-segmenter-Kiste in Rust bieten Graphem-Cluster-Genauigkeit. Dieses Web-Werkzeug verwenden, wenn man eine korrekte Umkehrung eines kurzen Ausschnitts benötigt, der Emojis, kombinierende Zeichen oder gemischte Schriften enthält - das ist der Weg des geringsten Widerstands und vermeidet die subtilen Fehler, die jeder naive Umkehrer hat.
Häufig gestellte Fragen
Wird der Daumen-hoch-Emoji mit dunklem Hautton korrekt umgekehrt?
Ja. Der Daumen-hoch-mit-dunklem-Hautton-Emoji ist eine ZWJ-freie Sequenz des Basis-Emojis plus einem Fitzpatrick-Typ-6-Modifikator-Zeichen, zwei Codepunkte, die ein Graphem-Cluster bilden. Array.from kehrt sie nach Codepunkt um, was den Modifikator zuerst platzieren würde - visuell gebrochen. Intl.Segmenter gruppiert sie als ein Cluster, sodass die Graphem-Level-Umkehrung die beiden benachbart und in der richtigen Reihenfolge hält. Das Werkzeug bevorzugt Segmenter, wenn der Browser es unterstützt (alle aktuellen Chrome-, Firefox-, Safari- und Edge-Builds tun das).
Ist eine Palindromprüfung so einfach wie der Vergleich mit der Umkehrung?
Für ASCII ja, für Unicode nicht ganz. Betrachte "naïve" - je nach Normalisierungsform kann das Wort anders gespeichert sein als seine zeichenumgekehrte Form, auch wenn beide identisch aussehen. Beide durch String.prototype.normalize("NFC") laufen lassen, bevor man sie vergleicht, ist die sichere Methode. Für das Ignorieren von Groß-Kleinschreibung, Zeichensetzung und Leerzeichen (das klassische Phrasen-Palindrom) diese zuerst entfernen. "A man a plan a canal Panama" ist nur nach Normalisierung und Interpunktionsbereinigung ein Palindrom.
Wird die Umkehrung auf einem Server durchgeführt?
Nein. Jeder Modus ist eine reine JavaScript-Funktion, die Array.from, Intl.Segmenter, String.split und Array.reverse verwendet - alles native Browser-APIs. Es gibt keinen Fetch-Aufruf, keinen Web-Worker und keinen Service-Worker-Cache für die Eingabe. Das Netzwerk nach dem Laden der Seite deaktivieren und der Umkehrprozess funktioniert weiterhin. Der Text bleibt im Browser-Tab und wird beim Schließen freigegeben.
Warum sieht umgekehrter arabischer Text seltsam aus?
Arabisch ist eine Rechts-nach-Links-Schrift, und das Rendering wird durch den Unicode-Bidirektionaler-Algorithmus gesteuert. Wenn man die logische Reihenfolge der Codepunkte umkehrt, versucht der Browser sie trotzdem nach den Bidi-Regeln darzustellen, was visuell verwirrendes Ergebnis erzeugen kann. Die Umkehrung ist mathematisch korrekt - zweimaliges Anwenden produziert das Original -, aber das Auge kann anderer Meinung sein. Für visuell spiegelbildliches Text-Rendering möchte man normalerweise eine CSS-Transformation, keine logische Umkehrung.
Handhabt "Wörter umkehren" Interpunktion vernünftig?
Es behandelt Interpunktion als Teil des benachbarten Wortes, weil das Aufteilen nur nach Leerzeichen keine Wortgrenzen erkennt. So wird "Hallo, Welt!" nach der Umkehrung zu "Welt! Hallo,". Wenn Sätze nach der Umkehrung immer noch grammatikalisch lesbar sein sollen, braucht man einen intelligenteren Tokenizer, der sowohl nach Leerzeichen als auch nach Interpunktion aufteilt. Für den üblichen gelegentlichen Gebrauch ist das einfache Aufteilen nach Leerzeichen das, was die meisten erwarten.
Was ist der Unterschied zwischen "Zeichen umkehren" und "Wörter umkehren"?
"Zeichen umkehren" kippt jedes Atom in der Zeichenkette - "Hallo Welt" wird zu "tleW ollaH". "Wörter umkehren" behält jedes Wort intakt und kehrt nur ihre Reihenfolge um - "Hallo Welt" wird zu "Welt Hallo". "Zeichen umkehren" kehrt auch die Leerzeichen-Position um; "Wörter umkehren" bewahrt Wortgrenzen, fasst aber mehrere Leerzeichen zu einem zusammen. Was man möchte, hängt völlig vom Ziel ab: kryptische Rätsel wollen meist Zeichen, narrative Umordnung meist Wörter.
Ändert "Zeilen umkehren" die Zeilenenden?
Es teilt nach /\r?\n/ auf, sodass es sowohl Unix-LF- als auch Windows-CRLF- Eingaben verarbeitet, und fügt dann nur mit \n zusammen. Eine CRLF-Eingabe erzeugt also eine LF-Ausgabe, was auf modernen Systemen fast immer das Gewollte ist. Wenn CRLF speziell erhalten werden muss, mit einem Werkzeug nachbearbeiten, das sie hinzufügt, oder einen Code-Editor verwenden, der nach der im Dateiheader deklarierten Zeilenend-Einstellung konvertiert.
Funktioniert das Werkzeug für russischen oder chinesischen Text?
Ja. Kyrillische Buchstaben sind einzelne Codepunkte, die sich sauber mit Array.from oder Intl.Segmenter umkehren. Chinesische Schriftzeichen sind ebenfalls einzelne Codepunkte ohne Kombinationsbeziehungen, sodass die Zeichenumkehrung eine korrekte, aber bedeutungslose Zeichenkette erzeugt. Die Wortumkehrung in Chinesisch ist effektiv eine Zeilenumkehrung, weil Chinesisch ohne Leerzeichen zwischen Zeichen oder Wörtern gesetzt wird; für echte wortgenaue Arbeit würde ein richtiger Tokenizer wie jieba oder kuromoji benötigt.
Kann ich einen Code-Block umkehren?
Die Zeichenumkehrung von Quellcode erzeugt syntaktisch ungültigen Unsinn - geschweifte Klammern und Klammern werden vertauscht, Zeichenketten werden gebrochen, Operatoren durcheinandergebracht. Zeilenumkehrung kann nützlich sein, um ein Historikprotokoll in chronologischer Reihenfolge darzustellen, sollte aber eher als Neuordnung verstanden werden. Wenn man die logische Richtung eines Algorithmus umkehren möchte, die umgekehrte Version von Hand schreiben - dieses Werkzeug ist für Prosa- und Rätsel-Szenarien.
Wie große eine Eingabe kann ich umkehren?
Eingaben bis zu mehreren Megabyte werden auf einem modernen Laptop in weit unter einer Sekunde umgekehrt. Der Engpass ist der Speicher für die Zwischenarrays: Array.from auf einer 100-MB-Zeichenkette erstellt ein 100-MB-Array von einelementigen Zeichenketten, was viel ist. Für gigabytegroßen Text GNU rev auf dem Terminal verwenden (nur ASCII-sicher) oder ein Streaming-Python-Skript, das Zeile für Zeile liest und jede Zeile mit text[::-1] umkehrt.
Mehr Text Tools
Binary to Text
Convert text to binary and binary back to text.
Open toolCase Converter
Convert text between UPPER, lower, Title, Sentence, camelCase, snake_case and more.
Open toolCharacter Counter
Count characters with platform-specific limits for Twitter, Instagram and more.
Open toolEmoji Picker & Search
Search and copy emojis by name or category.
Open toolFancy Text Generator
Generate stylish text with bubbles, squares, upside down and more for social media.
Open toolFind & Replace
Find and replace text with regex support and case-sensitive options.
Open tool