Signatur
Beschreibung
Die Methode trimStart() entfernt alle Whitespace-Zeichen am Anfang eines Strings. Dazu gehören Leerzeichen, Tabulatoren, geschützte Leerzeichen (\u00A0), das BOM (\uFEFF), weitere Unicode-Leerzeichen der Kategorie „Space_Separator“ sowie Zeilenumbrüche (\n, \r, \u2028, \u2029). Das Ende des Strings bleibt unverändert.
Da Strings in JavaScript unveränderlich sind, gibt die Methode immer einen neuen String zurück – der ursprüngliche Wert bleibt erhalten. Enthält der String am Anfang keinen Whitespace, wird trotzdem ein (inhaltlich identischer) String zurückgegeben.
Typische Einsatzgebiete sind das Bereinigen von Benutzereingaben, bei denen nachfolgende Leerzeichen bedeutsam sind, das Entfernen von Einrückungen in mehrzeiligen Texten oder das Parsen von Zeilen aus Konfigurationsdateien und Protokollen, bei denen führende Einrückung ignoriert werden soll.
trimLeft() ist ein aus Gründen der Web-Kompatibilität erhaltener Alias. Beide Namen verweisen auf dasselbe Funktionsobjekt; der Name trimStart wurde bei der Standardisierung aus Konsistenz zu padStart() gewählt und sollte in neuem Code bevorzugt werden.
Rückgabewert
"" zurückgegeben.Beispiele
Führende Leerzeichen entfernen
const eingabe = ' Hallo Welt! ';
const ergebnis = eingabe.trimStart();
console.log(`[${ergebnis}]`);
console.log(`[${eingabe}]`); // Original bleibt unverändert
Einrückung in mehrzeiligem Text entfernen
const text = `
Zeile eins
Zeile zwei
Zeile drei`;
const bereinigt = text
.split('\n')
.map((zeile) => zeile.trimStart())
.filter((zeile) => zeile.length > 0)
.join('\n');
console.log(bereinigt);
Kommentarzeilen in einer Konfigurationsdatei erkennen
const config = `# Kommentar
port=8080
# eingerückter Kommentar
host=localhost`;
const eintraege = config
.split('\n')
.map((z) => z.trimStart())
.filter((z) => z && !z.startsWith('#'))
.map((z) => z.split('='));
console.log(Object.fromEntries(eintraege));
Alias trimLeft und Unicode-Whitespace
const s = '\u00A0\t\n\uFEFFInhalt';
console.log(s.trimStart()); // alle Whitespace-Arten entfernt
console.log(String.prototype.trimLeft === String.prototype.trimStart);
console.log(String.prototype.trimLeft.name);
// Wichtig · Fallstricke
- Kein In-place-Verändern:
str.trimStart();ohne Zuweisung hat keine Wirkung – das Ergebnis muss gespeichert werden (str = str.trimStart()). - Nicht auf
null/undefinedaufrufen: Das wirft einenTypeError. Bei optionalen Werten z. B.wert?.trimStart() ?? ''verwenden. - Zero-Width-Zeichen: Zeichen wie
\u200B(Zero Width Space) gelten nicht als Whitespace und werden nicht entfernt. Hierfür ist ein regulärer Ausdruck nötig, z. B.str.replace(/^[\s\u200B]+/, ''). - Nur Whitespace: Andere Zeichen am Anfang (etwa führende Nullen oder Bindestriche) lassen sich nicht mitgeben – dafür
replace()mit Regex nutzen. - Kompatibilität:
trimStart()ist seit ES2019 standardisiert und in allen modernen Browsern sowie Node.js 10+ verfügbar.trimLeft()funktioniert auch in älteren Engines, gilt aber nur als Kompatibilitäts-Alias; in neuem CodetrimStart()verwenden.