Einführung
Das Auffüllen einer Zeichenfolge umfasst das Hinzufügen von Zeichen am Anfang oder Ende, um ein zu erreichen gewünschte Länge. Dies ist in verschiedenen Szenarien nützlich, beispielsweise bei der Ausrichtung in Tabellen oder beim Formatieren von Zahlen. In diesem Artikel wird eine JavaScript-Funktion untersucht, die das Auffüllen von Zeichenfolgen erleichtert.
Lösungen vor ES8
Vor ECMAScript 8 (ES8) verwendeten Entwickler verschiedene Methoden zum Auffüllen von Zeichenfolgen. Ein einfacher Ansatz besteht darin, die Zeichenfolge mit einem vordefinierten Füllwert zu verketten und das Ergebnis in Scheiben zu schneiden, um die gewünschte Länge zu erhalten:
var n = 123; String("00000" + n).slice(-5); // returns 00123 ("00000" + n).slice(-5); // returns 00123 (" " + n).slice(-5); // returns " 123" (with two spaces)
Eine andere Lösung erweitert das Zeichenfolgenobjekt mit einer paddingLeft-Methode:
String.prototype.paddingLeft = function (paddingValue) { return String(paddingValue + this).slice(-paddingValue.length); };
Diese Methode kann wie folgt verwendet werden:
function getFormattedTime(date) { var hours = date.getHours(); var minutes = date.getMinutes(); hours = hours.toString().paddingLeft("00"); minutes = minutes.toString().paddingLeft("00"); return "{0}:{1}".format(hours, minutes); }; String.prototype.format = function () { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
ES8 und Darüber hinaus
ES8 hat die String.padStart-Methode eingeführt, die das Auffüllen von Zeichenfolgen vereinfacht:
"Jonas".padStart(10); // Default pad string is a space "42".padStart(6, "0"); // Pad with "0" "*".padStart(8, "-/|\"); // produces '-/|\-/|*'
Wenn String.padStart nicht verfügbar ist, kann es mit einer Polyfüllung hinzugefügt werden. Die folgende Polyfüllung erweitert das String-Objekt:
String.prototype.padLeft = function (desiredLength) { var padString = " "; if (arguments.length > 1) { padString = arguments[1]; } var padLength = desiredLength - this.length; if (padLength >= 0) { return padString.repeat(Math.ceil(padLength / padString.length)).slice(0, padLength) + this; } else { return this; } };
Das obige ist der detaillierte Inhalt vonWie kann ich Strings in JavaScript effizient auffüllen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!