Start · Sprachen · JavaScript · Referenz · String.prototype.trimStart()

String.prototype.trimStart()

Methode

Entfernt Whitespace und Zeilenumbrüche am Anfang eines Strings und gibt einen neuen String zurück; <code>trimLeft()</code> ist ein Alias.

seit JavaScript ES2019 (Baseline: alle modernen Browser, Node.js 1 Kategorie: method-property

Signatur

String.prototype.trimStart()

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

Typ
string
Beschreibung
Ein neuer String, der dem Ausgangsstring ohne führenden Whitespace entspricht. Besteht der String nur aus Whitespace, wird ein leerer String "" 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
[Hallo Welt! ] [ Hallo Welt! ]

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);
Zeile eins Zeile zwei Zeile drei

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));
{ port: '8080', host: 'localhost' }

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);
Inhalt true trimStart

// 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/undefined aufrufen: Das wirft einen TypeError. 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 Code trimStart() verwenden.