Skip to main content

Leerzeichen-Entferner

Leerzeichen, doppelte Abstande und Leerzeilen aus Text entfernen oder reduzieren.

Geprüft von · Zuletzt geprüft

So verwendest du den Leerzeichen-Entferner

  1. Text einfügen in den Eingabebereich. Jede Mischung aus Leerzeichen, Tabs, Leerzeilen oder Zeilenenden wird akzeptiert.
  2. Einen Bereinigungsmodus wählen aus den Radio-Schaltflächen über der Ausgabe: Ränder trimmen, Leerzeichen reduzieren, Alle Leerzeichen entfernen, Leerzeilen entfernen oder Alle Whitespace entfernen.
  3. Die Ausgabe live aktualisieren sehen beim Moduswechsel - keine Senden-Schaltfläche erforderlich.
  4. Die Byte-Anzahlen prüfen, die neben Eingabe und Ausgabe angezeigt werden. Das Delta zeigt genau, wie viele Zeichen der Modus entfernt hat.
  5. "Kopieren" anklicken, um den bereinigten Text in die Zwischenablage zu senden, bereit zum Einfügen in den Editor, das CMS oder die Datenbankzeile.
  6. Modi wechseln und erneut kopieren nach Belieben; die ursprüngliche Eingabe wird nie verändert, sodass man mehrere Durchläufe ausprobieren kann.

Was jeder Modus tatsächlich tut

"Ränder trimmen" führt zeile.trim() für jede Zeile aus, was alle Unicode-Leerzeichen-Zeichen entfernt, die durch \\s definiert sind, von beiden Enden. "Leerzeichen reduzieren" wendet den Regex /[ \\t]+/g an und ersetzt jede Folge durch ein einzelnes Leerzeichen, wobei Zeilenumbrüche unverändert bleiben. "Alle Leerzeichen entfernen" verwendet /[ \\t]+/g mit einem leeren Ersatz, sodass Wörter kollidieren. "Leerzeilen entfernen" filtert das aufgeteilte Zeilen-Array mit einem Prädikat zeile.trim().length > 0. "Alle Whitespace entfernen" wendet /\\s+/g global an, was auf jedes Zeichen in der Unicode-Kategorie Zs plus Zeilenterminatoren (\\n, \\r, \\t, \\v, \\f) trifft. Alle Modi verwenden String.prototype.replace, sodass die Transformationen linear in der Länge der Eingabe sind und im nativen Regex-Engine des Browsers ohne zusätzliche Zuweisungen pro Zeichen laufen.

Wann man es verwendet

  • Text in ein Zeichenanzahl-begrenztes Feld passen - Twitter, SMS, LinkedIn-Überschrift, Meta-Beschreibung - durch Reduzieren doppelter Leerzeichen.
  • Einen Code-Ausschnitt bereinigen, der aus einem PDF oder einer Folie eingefügt wurde, bei dem jede Zeile führende Leerzeichen hat, die das Markdown-Rendering unterbricht.
  • Leerzeilen aus einer CSV vor dem Import entfernen, damit die Datenbank keine Zeile voller Nullen erstellt.
  • Eine mehrzeilige Zeichenkette in eine einzelne Zeile reduzieren, bevor man sie in eine Zelle einer Tabellenkalkulation oder den Körper einer Shell-Einzeiler einfügt.
  • E-Mail-Körpertext für einen mailto:-Link vorbereiten, bei dem kodierte Leerzeichen und Zeilenumbrüche Clients falsch rendern lassen.
  • Einrückung aus einem Code-Block entfernen, bevor man Wortanzahl- oder Ähnlichkeitswerkzeuge ausführt, die Zahlen wegen führenden Tabs aufblasen.

Häufige Fallstricke und Sonderfälle

  • Nicht-brechendes Leerzeichen (U+00A0). Es ist visuell ein Leerzeichen, aber einige Regex-Engines schließen es aus \\s aus. Modernes JavaScript \\s schließt es ein, aber ältere RegExp-Tabellen in Legacy-Browsern möglicherweise nicht. Die Ausgabe prüfen, wenn man auf Internet Explorer 11 ist.
  • Null-Breite-Leerzeichen (U+200B). Diese sind kein Leerzeichen per Unicode; sie sind Formatzeichen. Das unsichtbare-Zeichen-Erkennungswerkzeug auf dieser Seite verwenden, um sie zu entfernen - dieses Werkzeug lässt sie in Ruhe.
  • CRLF-Zeilenenden. "Alle Whitespace entfernen" entfernt \\r und \\n zusammen und reduziert die Datei. "Leerzeilen entfernen" bewahrt Zeilenenden, kann aber ein streundes \\r in der letzten nicht-leeren Zeile hinterlassen, wenn DOS-Format-Text eingefügt wurde.
  • YAML- und Python-Einrückung. "Ränder trimmen" und "Alle Leerzeichen entfernen" werden gerne diese Sprachen beschädigen, weil Einrückung syntaktisch bedeutsam ist. Höchstens "Leerzeichen reduzieren" verwenden und die Ausgabe doppelt prüfen.
  • Abschließender Zeilenumbruch. Viele Systeme (Unix-Werkzeuge, Git, Editoren) erwarten einen abschließenden Zeilenumbruch. "Leerzeilen entfernen" bewahrt den abschließenden Zeilenumbruch der letzten nicht-leeren Zeile wenn vorhanden; "Alle Whitespace entfernen" entfernt ihn.
  • Tabs in Code. "Leerzeichen reduzieren" ersetzt Tabs durch ein einzelnes Leerzeichen, was die Ausrichtung in Sprachen ändert, denen die Spaltenpositionierung wichtig ist.

Was als Leerzeichen gilt

Unicode definiert Leerzeichen über die White_Space-Eigenschaft, die 25 Codepunkte abdeckt: den ASCII-Block U+0009 bis U+000D plus U+0020, das Nicht-brechende Leerzeichen U+00A0, das Ogham-Leerzeichen U+1680, den Halbgeviert und verwandte Interpunktionsleerzeichen U+2000 bis U+200A, Zeilentrenner U+2028, Absatztrenner U+2029, schmales Nicht-brechendes Leerzeichen U+202F, mittleres mathematisches Leerzeichen U+205F und ideografisches Leerzeichen U+3000. Javascripts \\s im Unicode-bewussten Modus trifft all diese (ECMA-262 definiert es als WhiteSpace- oder LineTerminator-Produktion). POSIX-Regex und älteres grep verwenden eine engere Definition, die auf ASCII beschränkt ist. Das zu wissen ist wichtig, wenn der Text aus einer japanischen Quelle stammt und U+3000 zwischen Wörtern verwendet, oder aus einem typografie-schweren PDF, das en-Leerzeichen zwischen Klauseln streut.

Vergleich zu Alternativen

Auf der Kommandozeile fasst tr -s ' ' Leerzeichen-Folgen zusammen, sed 's/^[ \\t]*//;s/[ \\t]*$//' trimmt jede Zeile, und awk 'NF' entfernt Leerzeilen. Alle drei kombinieren sich gut in Pipelines und laufen bei nativem Tempo auf Gigabytes Text. Die "Abschließende Leerzeichen beim Speichern trimmen"-Einstellung des IDE ist die richtige Langzeit-Lösung für Code-Dateien. VS Code und JetBrains IDEs haben auch "Leerzeilen löschen"-Befehle in ihren Menüs. Dedizierte Formatierer wie prettier, black und gofmt normalisieren Leerzeichen als Teil eines breiteren Neuformats. Dieses Web-Werkzeug verwenden, wenn man einen Text-Ausschnitt zu bereinigen hat, nicht in einer Shell ist und Modi nebeneinander in der Vorschau sehen möchte, bevor man sich für einen entscheidet - besonders auf dem Handy oder auf einem Rechner, auf dem man nichts installieren kann.

Häufig gestellte Fragen

Was ist der Unterschied zwischen "Alle Leerzeichen entfernen" und "Alle Whitespace entfernen"?

"Alle Leerzeichen entfernen" entfernt nur reguläre Leerzeichen (U+0020) und Tabs (U+0009) und lässt Zeilenumbrüche intakt, sodass der Text seine ursprüngliche Zeilenstruktur behält. "Alle Whitespace entfernen" geht weiter und entfernt auch Zeilenvorschübe (U+000A), Zeilenrückläufer (U+000D), vertikale Tabs, Seitenvorschübe und den vollständigen Satz der Unicode- Leerzeichen-Separatoren, was eine einzige kontinuierliche Zeichenkette ohne Unterbrechungen erzeugt. Das erste ist zum Einpassen in enge Spalten; das zweite ist zum Erstellen von Schlüsseln oder Hashes, bei denen nur die sichtbaren Zeichen zählen sollten.

Reduziert "Leerzeichen reduzieren" auch gemischte Tab-und-Leerzeichen-Folgen?

Ja. Der reguläre Ausdruck trifft auf alle Folgen mit einem oder mehr Zeichen aus der Klasse [ \t], sodass eine Mischung wie Tab-Leerzeichen- Leerzeichen-Tab als eine Folge behandelt und durch ein einzelnes Leerzeichen ersetzt wird. Das ist meist gewünscht, wenn Text aus einem Textverarbeitungsprogramm stammt, das beide frei zur Ausrichtung abwechselte, ist aber destruktiv, wenn der ursprüngliche Einrückungsstil erhalten bleiben soll.

Wird irgendeines dieser Verarbeitungsschritte auf einem Server durchgeführt?

Nein. Jeder Modus ist ein einfacher JavaScript-Regex-Ersatz, der im Browser-Tab auf dem Haupt-Thread ausgeführt wird. Es gibt keinen Fetch, keinen Worker, keine Service-Worker-Abfangung und keine Telemetrie. Das Netzwerk nach dem Laden der Seite deaktivieren und jeder Modus funktioniert weiterhin identisch. Das Werkzeug funktioniert offline auf jedem modernen Browser, der die grundlegenden String- und RegExp-APIs aus ES2015 unterstützt.

Wird das meinen YAML- oder Python-Code beschädigen?

Es kann, katastrophal. Beide Sprachen verwenden führende Leerzeichen als Syntax - Python rückt Blöcke mit konsistenten Leerzeichen oder Tabs ein, und YAML verschachtelt Strukturen mit Einrückung. "Ränder trimmen", "Alle Leerzeichen entfernen" und "Alle Whitespace entfernen" werden alle beschädigten Code erzeugen. "Leerzeichen reduzieren" lässt führende Leerzeichen innerhalb der Zeilenbruch-Semantik in Ruhe, fasst aber Folgen zusammen. Wenn die Eingabe Code ist, die Datei durch einen geeigneten Formatierer führen (black, prettier, gofmt) statt durch dieses Werkzeug.

Was passiert mit CRLF-Zeilenenden?

"Alle Whitespace entfernen" entfernt sowohl den Zeilenrückläufer als auch den Zeilenvorschub und reduziert alles. "Leerzeichen reduzieren" und "Alle Leerzeichen entfernen" lassen Zeilenenden unverändert. "Leerzeilen entfernen" behandelt eine Zeile, die nur \r enthält, als leer (weil trim es entfernt) und filtert es heraus, was nach dem Öffnen einer Windows-bearbeiteten Datei in einem Unix-Werkzeug normalerweise gewünscht ist. Wenn Zeilenenden speziell konvertiert werden müssen, ist ein Werkzeug wie dos2unix präziser.

Warum sinkt meine Zeichenanzahl nach "Leerzeilen entfernen" um mehr als erwartet?

Jede Leerzeile in der Eingabe enthält mindestens ein einziges Zeilenvorschub-Zeichen und manchmal auch einen Zeilenrückläufer. Das Entfernen von 50 Leerzeilen aus einer CRLF-Datei senkt die Anzahl um 100 Zeichen, auch wenn man nichts sah. Die Byte-Anzahl-Anzeige gibt die rohe Zeichenanzahl wieder, sodass das Delta dem entspricht, was ein Hex-Editor anzeigen würde.

Entfernt "Ränder trimmen" führende BOM-Zeichen?

Ja, wenn die BOM das erste Zeichen der ersten Zeile ist. Das U+FEFF- Byte-Reihenfolge-Zeichen wird von \s in modernen JavaScript-Engines getroffen, sodass trim() es entfernt. Das ist ein nützlicher Nebeneffekt beim Bereinigen einer Datei, die aus Notepad exportiert wurde und eine BOM eingeführt hat, die nachgelagerte Parser bricht. Für spezielle unsichtbare Zeichenbereinigung gibt das unsichtbare-Zeichen-Erkennungswerkzeug auf dieser Seite jedes Vorkommen an und bietet feinere Kontrolle.

Kann ich mehrere Modi kombinieren?

Die Benutzeroberfläche bietet einen Modus zur Zeit, aber man kann den Text durch mehrere Durchläufe pipen: "Leerzeilen entfernen" wählen, die Ausgabe kopieren, zurück einfügen und dann "Ränder trimmen" wählen. Zwei-Pass-Pipelines decken die meisten echten Bereinigungen ab. Für programmatisches Verketten ist ein kleines Skript, das String.prototype.replace mehrfach aufruft, einfacher als der Versuch, einen einzigen Mega-Regex zu erstellen.

Bewahrt es Emoji und nicht-lateinische Zeichen?

Ja. Die Modi operieren speziell auf Leerzeichen-Zeichen; alles andere passiert unverändert. Emoji, CJK-Schriftzeichen, Arabisch, Hebräisch, Devanagari und jedes andere Skript werden byte-für-byte bewahrt. Der einzige Vorbehalt ist der ideographische Leerzeichen U+3000, der in der japanischen Typografie verwendet wird, den "Alle Whitespace entfernen" entfernen wird, weil er Teil des Unicode-Leerzeichen-Satzes ist.

Gibt es eine Größenbeschränkung?

Die praktische Grenze ist das, was der Browser gerne in einem Textbereich rendert: einige Megabyte, bevor die Scroll-Latenz bemerkbar wird. Der Regex-Ersatz selbst ist linear in der Eingabelänge und verarbeitet weit mehr. Für Protokolldateien im zweistelligen Megabyte-Bereich ist ein Kommandozeilen-Werkzeug (sed, awk, tr) schneller und bindet den Browser-Tab nicht.

Verwandte Tools

Mehr Text Tools

ZeroUtil unterstützen