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

String.prototype.padEnd()

Methode

Füllt einen String am Ende mit einem Füllstring auf (bei Bedarf wiederholt oder abgeschnitten), bis die Ziellänge <code>targetLength</code> erreicht ist.

seit JavaScript ES2017 Kategorie: method-property

Signatur

String.prototype.padEnd(targetLength, padString)

Beschreibung

Die Methode padEnd() gibt einen neuen String zurück, der am Ende so lange mit padString aufgefüllt wird, bis er die Länge targetLength hat. Ist der Füllstring zu lang für den verbleibenden Platz, wird er abgeschnitten. Reicht er nicht, wird er wiederholt. Der ursprüngliche String bleibt unverändert, denn Strings sind in JavaScript unveränderlich.

Typische Einsatzfälle sind linksbündige Spalten in Konsolen- oder Textausgaben (Tabellen, Logs, CLI-Werkzeuge), Datensätze mit fester Breite (etwa für Altsysteme oder Bankformate) und optisches Ausrichten von Beschriftungen mit Punkten oder Leerzeichen, wie in einem Inhaltsverzeichnis.

Ist targetLength kleiner oder gleich der aktuellen Länge des Strings, kommt der String unverändert zurück. Er wird also nie gekürzt. Wenn du Werte auf eine feste Breite bringen musst, kombinierst du padEnd() mit slice(). Das Gegenstück, das am Anfang auffüllt, ist padStart().

Parameter

Name Typ Default Beschreibung
$targetLength Pflicht number Länge, die der Ergebnis-String haben soll. Ist der Wert kleiner oder gleich str.length, wird der String unverändert zurückgegeben. Der Wert wird in eine Ganzzahl umgewandelt (NaN wird zu 0).
$padString string " " (Leerzeichen, U+0020) Der Füllstring. Er wird bei Bedarf wiederholt und am Ende abgeschnitten, damit die Ziellänge genau passt. Ein leerer String ("") bewirkt, dass nichts aufgefüllt wird. Werte, die keine Strings sind, werden in einen String umgewandelt.

Rückgabewert

Typ
string
Beschreibung
Ein neuer String mit der Länge targetLength, am Ende mit padString aufgefüllt, oder der unveränderte ursprüngliche String, wenn keine Auffüllung nötig ist.

Beispiele

Grundlegendes Verhalten

console.log('abc'.padEnd(10));          // mit Leerzeichen
console.log('abc'.padEnd(10, 'foo'));   // wiederholt
console.log('abc'.padEnd(6, '123456')); // abgeschnitten
console.log('abc'.padEnd(1));           // kein Kürzen
console.log('abc'.padEnd(8, ''));       // leerer Füllstring
"abc " "abcfoofoof" "abc123" "abc" "abc"

Tabellarische Konsolenausgabe mit linksbündigen Spalten

const produkte = [
  { name: 'Tastatur', preis: 49.9 },
  { name: 'Maus', preis: 19.5 },
  { name: 'Monitor 27"', preis: 289 }
];

const breite = Math.max(...produkte.map(p => p.name.length)) + 2;

for (const { name, preis } of produkte) {
  console.log(`${name.padEnd(breite)}${preis.toFixed(2).padStart(8)} €`);
}
Tastatur 49.90 € Maus 19.50 € Monitor 27" 289.00 €

Inhaltsverzeichnis mit Füllpunkten

const kapitel = [
  ['Einleitung', 1],
  ['Grundlagen', 7],
  ['Fortgeschrittene Themen', 42]
];

const zeilen = kapitel.map(([titel, seite]) =>
  `${(titel + ' ').padEnd(30, '.')} ${String(seite).padStart(3)}`
);

console.log(zeilen.join('\n'));
Einleitung ................... 1 Grundlagen ................... 7 Fortgeschrittene Themen ...... 42

Datensatz mit fester Feldbreite (auffüllen und kürzen)

// Jedes Feld hat exakt die angegebene Breite
const feld = (wert, breite) => String(wert).padEnd(breite).slice(0, breite);

const datensatz = feld('Mustermann', 8) + feld('Erika', 6) + feld('Berlin', 10);

console.log(`[${datensatz}]`);
console.log(datensatz.length);
[MustermaErika Berlin ] 24

// Wichtig · Fallstricke

  • Kein Kürzen: padEnd() macht einen String nie kürzer. Wenn du eine feste Breite erzwingen musst, hängst du .slice(0, n) an.
  • Länge in UTF-16-Codeeinheiten: targetLength bezieht sich auf length, also nicht auf sichtbare Zeichen. Emojis wie '😀' zählen als 2, kombinierte Zeichen (z. B. 'e\u0301') ebenfalls als mehrere Einheiten. Ein mehrteiliger Füllstring kann außerdem mitten in einem Ersatzzeichenpaar (Surrogatpaar) abgeschnitten werden, zum Beispiel ergibt 'a'.padEnd(2, '😀') ein ungültiges Einzelzeichen. Spalten mit Emojis oder breiten Schriftzeichen (CJK) werden in der Konsole deshalb oft nicht exakt ausgerichtet.
  • Nur für Strings: Zahlen musst du erst umwandeln (String(n) oder n.toString()). (5).padEnd(3) wirft einen TypeError.
  • Zu große Ziellänge: Liegt targetLength über der maximalen String-Länge der Engine, wird ein RangeError ausgelöst (z. B. 'a'.padEnd(Infinity)).
  • Kompatibilität: Seit ES2017 verfügbar und in allen modernen Browsern sowie ab Node.js 8 unterstützt. Der Internet Explorer kennt die Methode nicht, dort ist ein Polyfill nötig (z. B. über core-js).