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

String.prototype.trim()

Methode

Entfernt Whitespace und Zeilenumbrüche an beiden Enden eines Strings und gibt einen neuen String zurück. Der ursprüngliche String bleibt unverändert.

seit JavaScript ES5 (ECMAScript 2009) – Baseline: alle Browser Kategorie: method-property

Signatur

String.prototype.trim()

Beschreibung

Die Methode trim() entfernt alle Whitespace-Zeichen und Zeilenendezeichen am Anfang und am Ende eines Strings. Zu den Whitespace-Zeichen gehören neben dem normalen Leerzeichen auch Tabulator (\t), vertikaler Tabulator (\v), Seitenvorschub (\f), das geschützte Leerzeichen (\u00A0), das BOM (\uFEFF) und alle Unicode-Leerzeichen der Kategorie „Space_Separator“. Zeilenendezeichen sind \n, \r, \u2028 und \u2029.

Weil Strings in JavaScript unveränderlich sind, gibt trim() immer einen neuen String zurück. Leerzeichen innerhalb des Strings bleiben erhalten. Soll nur ein Ende bereinigt werden, nimmt man trimStart() oder trimEnd().

Typische Einsatzfälle sind das Bereinigen von Benutzereingaben aus Formularfeldern, das Prüfen auf „leere“ Eingaben (nur Leerzeichen), das Verarbeiten von Zeilen aus Textdateien oder CSV-Daten und das Normalisieren von Werten vor dem Vergleich oder Speichern.

Rückgabewert

Typ
string
Beschreibung
Ein neuer String ohne Whitespace und Zeilenendezeichen am Anfang und am Ende. Enthält der String an beiden Enden keinen Whitespace, wird trotzdem ein neuer String mit gleichem Inhalt zurückgegeben.

Beispiele

Grundlegende Verwendung

const text = '   Hallo Welt!   ';

console.log(`[${text.trim()}]`);
console.log(`[${text}]`); // Original bleibt unverändert
[Hallo Welt!] [ Hallo Welt! ]

Formulareingabe validieren und bereinigen

const validateUsername = (input) => {
  const name = input.trim();
  if (name === '') {
    return { ok: false, error: 'Benutzername darf nicht leer sein.' };
  }
  return { ok: true, value: name };
};

console.log(validateUsername('   '));
console.log(validateUsername('  max.mustermann\n'));
{ ok: false, error: 'Benutzername darf nicht leer sein.' } { ok: true, value: 'max.mustermann' }

Zeilen einer Textdatei bereinigen

const raw = '  Apfel \r\n\tBanane\n   \n Kirsche  ';

const items = raw
  .split('\n')
  .map((line) => line.trim())
  .filter((line) => line.length > 0);

console.log(items);
[ 'Apfel', 'Banane', 'Kirsche' ]

Unicode-Whitespace und Vergleich mit trimStart/trimEnd

const s = '\u00A0\uFEFF  Preis: 42 €\t\u2028';

console.log(JSON.stringify(s.trim()));
console.log(JSON.stringify('  a  '.trimStart()));
console.log(JSON.stringify('  a  '.trimEnd()));
"Preis: 42 €" "a " " a"

// Wichtig · Fallstricke

  • Nur die Enden: trim() entfernt keine Leerzeichen in der Mitte. Um mehrfache Leerzeichen zusammenzufassen, verwendet man z. B. str.trim().replace(/\s+/g, ' ').
  • Kein Parameter für eigene Zeichen: Andere Zeichen (z. B. / oder -) lassen sich nicht übergeben. Dafür braucht man einen regulären Ausdruck, etwa str.replace(/^\/+|\/+$/g, '').
  • Nicht jedes „unsichtbare“ Zeichen zählt: Zeichen wie das Zero-Width Space (\u200B) oder Zero-Width Joiner (\u200D) gelten nicht als Whitespace und werden nicht entfernt.
  • Aufruf auf null/undefined: null.trim() wirft einen TypeError. Bei unsicheren Werten Optional Chaining nutzen: value?.trim() ?? ''.
  • Rückgabewert verwenden: Da Strings unveränderlich sind, bewirkt str.trim(); ohne Zuweisung nichts. Richtig ist str = str.trim();.
  • Kompatibilität: Wird seit ES5 von allen Browsern und von Node.js unterstützt. trimStart()/trimEnd() gibt es seit ES2019; die älteren Aliasse trimLeft()/trimRight() existieren nur noch aus Kompatibilitätsgründen.