Eine Zahl mit führenden Nullen in JavaScript auffüllen

In JavaScript benötige ich eine Füllung.

Wenn ich zum Beispiel die Zahl 9 habe, wird sie "0009" sein. Bei einer Zahl von z. B. 10 wird es "0010" sein. Beachten Sie, dass sie immer vier Ziffern enthalten wird.

Eine Möglichkeit, dies zu tun, wäre, die Zahl minus 4 zu subtrahieren, um die Anzahl der 0en zu erhalten, die ich einsetzen muss.

Gibt es eine elegantere Möglichkeit, dies zu tun?

Bislang ist nicht viel "Gescheites" im Gange:

function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

Wenn man ein Array mit einer Zahl initialisiert, wird ein Array mit der Länge auf diesen Wert gesetzt, so dass das Array so aussieht, als ob es so viele undefinierte Elemente enthält. Obwohl einige Array-Instanzmethoden Array-Elemente ohne Werte überspringen, tut dies .join() nicht, oder zumindest nicht vollständig; es behandelt sie, als ob ihr Wert die leere Zeichenkette wäre. So erhalten Sie eine Kopie des Null-Zeichens (oder was auch immer "z" ist) zwischen jedem der Array-Elemente; das ist der Grund, warum dort ein "+ 1" steht.

Beispiel für die Verwendung:

pad(10, 4);      // 0010
pad(9, 4);       // 0009
pad(123, 4);     // 0123

pad(10, 4, '-'); // --10
Kommentare (14)

function padToFour(number) {
  if (number
Kommentare (10)

Versuchen Sie es:

String.prototype.lpad = function(padString, length) {
    var str = this;
    while (str.length < length)
        str = padString + str;
    return str;
}

Jetzt testen:

var str = "5";
alert(str.lpad("0", 4)); //result "0005"
var str = "10"; // note this is string type
alert(str.lpad("0", 4)); //result "0010"

[DEMO][1]


In ECMAScript 8 gibt es eine neue Methode padStart und padEnd mit der folgenden Syntax.

'string'.padStart(targetLength [,padString]):

Jetzt können wir also verwenden

const str = "5";
str.padStart(4, '0'); // '0005'
Kommentare (8)