Signatur
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
Beispiele
Grundlegende Verwendung
const text = ' Hallo Welt! ';
console.log(`[${text.trim()}]`);
console.log(`[${text}]`); // Original bleibt unverändert
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'));
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);
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()));
// 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, etwastr.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 einenTypeError. Bei unsicheren Werten Optional Chaining nutzen:value?.trim() ?? ''. - Rückgabewert verwenden: Da Strings unveränderlich sind, bewirkt
str.trim();ohne Zuweisung nichts. Richtig iststr = str.trim();. - Kompatibilität: Wird seit ES5 von allen Browsern und von Node.js unterstützt.
trimStart()/trimEnd()gibt es seit ES2019; die älteren AliassetrimLeft()/trimRight()existieren nur noch aus Kompatibilitätsgründen.