Tabs in Leerzeichen
Ein Tab am Zeilenanfang wird zu 4 Leerzeichen, ein Tab nach einem Zeichen aber zu 3: Jeder Tab springt zum nächsten Tabstopp, sodass Ihre Ausrichtung erhalten bleibt und die Datei nur noch Leerzeichen enthält. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- function hi() { return true; }
- Tabulatorbreite
- 4
- Text
- function hi() { return true; }
- Ersetzte Tabulatoren
- 1
- Hinzugefügte Leerzeichen
- 4
- Zeichen vorher
- 31
Gemischte Einrückung mit Tabs und Leerzeichen ist einer der häufigsten Stilkonflikte in Softwareteams und zugleich eine der stillsten Ursachen für kaputte Diffs, fehlschlagende Patches und Continuous-Integration-Linter, die den Commit ablehnen. Ein Tabs-zu-Leerzeichen-Konverter nimmt Quelltext, der noch Tabulatorzeichen enthält, und schreibt jedes Tab als Leerzeichen um, sodass die visuellen Spalten erhalten bleiben und die Datei nur noch mit Leerzeichen eingerückt ist. Diese Fähigkeit wandert jede Zeile von links nach rechts, erhöht einen Spaltenzähler für jedes Zeichen und fügt bei einem Tab genau so viele Leerzeichen ein, dass der nächste Tabstopp Ihrer gewählten Breite erreicht wird. Sowohl die Blockeinrückung am Zeilenanfang als auch Ausrichtungs-Tabs mitten in der Zeile werden expandiert. Vorhandene Leerzeichen bleiben unangetastet, damit beabsichtigte Mehrfachlücken nicht kollabieren.
Wie Tabstopps Tabs zu Leerzeichen expandieren, ohne die Ausrichtung zu verlieren
Ein Tabulatorzeichen ist keine feste Anzahl von Leerzeichen; es ist ein Sprung zum nächsten Vielfachen der Tabbreite ab Zeilenanfang. Editoren und Terminals nutzen diese Regel, damit ein Tab nach einer kurzen Beschriftung und einer nach einer langen auf demselben Spaltenraster landen. Führende Einrückung aus einem oder mehreren Tabs wird so zu einem sauberen Vielfachen von Leerzeichen, und Inline-Tabs für tabellenartige Ausrichtung in Kommentaren oder Parameterlisten behalten ihre visuellen Spalten statt in einem plumpen Ersetzen jedes Tabs durch dieselbe feste Leerzeichenfolge zu enden.
Wagenrücklaufzeichen bleiben bei CRLF-Dateien erhalten, ohne die Spalte vor dem Linefeed zurückzusetzen, sodass Windows-Zeilenenden die Spaltenarithmetik nicht durcheinanderbringen.
Wann sich das Umwandeln von Tabs lohnt
Stil-Pipelines brauchen oft einen deterministischen Umschreibeschritt vor Formatierern, die nur Leerzeichen-Einrückung annehmen, oder nach Importen aus Editoren, die noch harte Tabs erzeugen. Dokumentationsseiten und Coding-Challenge-Plattformen, die Studenteneinreichungen annehmen, können Tabs serverseitig normalisieren, damit Auto-Grader reine Leerzeichendateien vergleichen und nie an unsichtbaren Tab-Unterschieden scheitern. Migrationsskripte, die ein Legacy-Repository massenhaft von Tabs zu Leerzeichen wandeln, können denselben Vertrag aus einer Shell-Schleife oder einem Edge-Worker aufrufen, ohne auf jedem Laptop Node-Module zu installieren.
Content-Teams, die für Tabs-zu-Leerzeichen-Konverter ranken, profitieren von einem kostenlosen Browserpfad, der byteweise dem bezahlten Automationspfad entspricht, sodass Marketing und Engineering-Runbooks nicht auseinanderlaufen. Fehlgeschlagene Validierung wird nicht berechnet.
Anwendungsfälle
Hausaufgaben und LMS-Abgaben
Normalisieren Sie Studentencode beim Upload, damit Auto-Grader nur Leerzeichendateien vergleichen und nicht an unsichtbaren Tab-Zeichen scheitern.
Häufige Fragen
Wie expandiert der Tabs-zu-Leerzeichen-Konverter jedes Tab?
Führende und Inline-Tabs expandieren so und die visuelle Ausrichtung bleibt erhalten.
Was passiert, wenn mein Text keine Tabulatorzeichen hat?
Sie können das Zurückschreiben überspringen, wenn changed false ist.
Warum wurde ein Tab zu drei statt zu vier Leerzeichen?
Weil ein Tab ein Sprung zum nächsten Tabstopp ist, kein fester Block aus Leerzeichen. Bei Breite 4 braucht ein Tab nach einem Zeichen nur drei Leerzeichen, um diesen Tabstopp zu erreichen.
Welche Tabbreite sollte ich wählen?
Nehmen Sie die Breite, die Ihr Editor oder Ihr Styleguide erwartet. Standard ist 4, die übliche Einstellung moderner Editoren, und jede ganze Zahl von 1 bis 16 ist möglich, also auch der Stil mit zwei Leerzeichen.
Bleiben Windows-Zeilenenden erhalten?
Ja. Wagenrückläufe bleiben unverändert, und die Spaltenzählung beginnt erst beim Zeilenvorschub neu. Dateien mit Windows-Zeilenenden behalten ihre Enden und ihre ausgerichteten Spalten.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/tabs-to-spaces \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function hi() {\n\treturn true;\n}"}'const res = await fetch("https://api.kit.forhosting.com/dev/tabs-to-spaces", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function hi() {\n\treturn true;\n}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/tabs-to-spaces",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function hi() {\n\treturn true;\n}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/tabs-to-spaces", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function hi() {\\n\\treturn true;\\n}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function hi() {\n\treturn true;\n}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/tabs-to-spaces", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "function hi() {\n\treturn true;\n}"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.tabs_to_spaces",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Wie Tabstopps Tabs zu Leerzeichen expandieren, ohne die Ausrichtung zu verlieren
Dieser Konverter setzt dieselbe Regel um: Er hält einen nullbasierten Spaltenindex, der bei jedem Zeilenvorschub zurückgesetzt wird, erhöht ihn um eins für jedes gewöhnliche Zeichen (einschließlich gewöhnlicher Leerzeichen) und berechnet bei einem Tab n gleich tab_size minus Spalte modulo tab_size, gibt genau n Leerzeichen aus und erhöht die Spalte um n. Deshalb wird ein Tab in Spalte null bei tab_size vier zu vier Leerzeichen, während ein Tab in Spalte eins zu drei Leerzeichen wird und ein Tab, der bereits auf einem Stopp sitzt, einen vollen neuen Stopp von wieder vier Leerzeichen erzeugt. Der Algorithmus ist ein einziger Durchlauf von links nach rechts ohne Lookahead, ohne Sprachparsing und ohne Netzwerkanrufe, sodass dieselbe Eingabe auf jedem Worker und im Browser stets dieselbe Ausgabe liefert.
Eingabefelder, Antwortform, Grenzen und Validierungsfehler
Senden Sie einen JSON-Körper mit dem Pflicht-Stringfeld text, das den zu normalisierenden Quellcode oder Klartext enthält. Optionale Aliasse wie input, code, source, content und body werden für dieselbe Nutzlast akzeptiert, damit bestehende Formulare und Skripte weniger umbenannt werden müssen. Die optionale Ganzzahl tab_size setzt die Tabstoppbreite; Standard ist vier, passend zu den meisten modernen Editoren und zu Style-Guides von JavaScript, Python und Rust, die nach dem Entfernen von Tabs vier- oder zweistellige Leerzeicheneinrückung erwarten. Gültig sind Ganzzahlen von eins bis sechzehn einschließlich; Werte außerhalb, Nicht-Ganzzahlen, NaN und Infinity scheitern mit invalid_input und benennen tab_size. Fehlendes text, kein String oder leerer String scheitern mit invalid_input und werden nicht berechnet. Die maximale Eingabelänge beträgt einhunderttausend Zeichen, damit ein Aufruf im Arbeitsspeicherbudget des Workers für typische Quelldateien und kleine Mehrdateiauszüge bleibt. Bei Erfolg enthält die Antwort text, die vollständig expandierte Zeichenkette; tab_size, die angewendete Breite; tabs_replaced, wie viele Tab-Zeichen gefunden wurden; spaces_added, die Gesamtzahl eingefügter Leerzeichen; chars_before und chars_after, die Längen vor und nach der Umwandlung; line_count, die Zeilenzahl nach dem Aufteilen an üblichen Zeilenumbruchformen; changed, ein boolesches true, wenn mindestens ein Tab expandiert wurde; und message, eine kurze menschliche Zusammenfassung der Umschreibung. Enthielt die Eingabe keine Tabs, wird text unverändert zurückgegeben, tabs_replaced ist null, changed ist false und die Meldung besagt, dass nichts geändert wurde, damit Sie das Zurückschreiben der Datei überspringen können.
Wann eine Tabs-zu-Leerzeichen-API in echten Abläufen Nutzen stiftet
Weil die Implementierung reines Parse der Stufe A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Basispreis $0.002 ohne Modell-Tokens und ohne ausgehendes Netz. Halten Sie Anfragen unter dem Zeichenlimit, pinnen Sie tab_size in Ihrer Konfiguration, und Sie erhalten reproduzierbaren reinen Leerzeichen-Quellcode für CI, LMS-Plugins und Offline-Batches, ohne einen sprachbewussten Formatierer nur für eine zeichenebene Einrückungskorrektur aufzustellen.
Integrationsbeispiele
Stil-Normalisierung in der CI
Expandieren Sie harte Tabs zu Leerzeichen mit fester tab_size vor Lint und Format, damit Diffs sauber bleiben und Werkzeuge mit Ablehnung gemischter Einrückung bestehen.
Massenumschreibung von Legacy-Repos
Wandeln Sie tab-eingerückte Module per API stapelweise in reine Leerzeichen um und bewahren Sie Inline-Ausrichtungs-Tabs als spaltenkorrekte Leerzeichenfolgen.
Technische Fragen
Welche Werte darf ich für tab_size verwenden?
Jede Ganzzahl von 1 bis 16 einschließlich. Der Standard ist 4. Werte außerhalb oder Nicht-Ganzzahlen scheitern mit invalid_input und werden nicht berechnet.
Werden vorhandene Leerzeichen entfernt oder kollabiert?
Nein. Vorhandene Leerzeichen bleiben unverändert. Nur Tab-Zeichen U+0009 werden durch die Leerzeichenfolge ersetzt, die die aktuelle Spalte und tab_size erfordern.
Was kostet der Tabs-zu-Leerzeichen-Konverter?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.