584 Stimmen

Wie kann ich einen Wert mit führenden Nullen auffüllen?

Was ist der empfohlene Weg, um einen Wert in JavaScript mit Nullen zu füllen? Ich kann mir vorstellen, dass ich eine benutzerdefinierte Funktion zum Auffüllen von Nullen auf einen eingegebenen Wert bauen könnte, aber ich frage mich, ob es einen direkteren Weg gibt, dies zu tun?

Anmerkung: Mit "zerofilled" meine ich es im Sinne des Wortes in der Datenbank (wo eine 6-stellige zerofilled Darstellung der Zahl 5 "000005" wäre).

1voto

Diese Methode ist nicht schneller, aber sie ist ziemlich nativ.

zeroPad = function (num, count) {
    return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
};

1voto

bob Punkte 11

Eine andere Version:

function zPad(s,n){
    return (new Array(n+1).join('0')+s).substr(-Math.max(n,s.toString().length));
}

1voto

Sheldon Punkte 11
function zeroFill(number, width) {
    width -= (number.toString().length - /\./.test(number));
    if (width > 0) {
        return new Array(width + 1).join('0') + number;
    }
    return number + ""; // always return a string
}

Geringfügige Änderungen am Code von Peter vorgenommen. Mit seinem Code, wenn die Eingabe (1.2, 3) ist, sollte der zurückgegebene Wert 01.2 sein, aber er gibt 1.2 zurück. Die Änderungen hier sollten das korrigieren.

1voto

Dani bISHOP Punkte 1146

Vielleicht bin ich zu naiv, aber ich denke, dass dies mit einer einfachen und effizienten Codezeile (für positive Zahlen) funktioniert:

padded = (value+Math.pow(10,total_length)+"").slice(1)

Solange Sie Ihre Länge OK nach Sie Satz von Werten (wie in jedem Null-Padding) zu halten, sollte dies funktionieren.

Die Schritte sind:

  1. Addiere die 10er-Potenz mit der richtigen Anzahl von 0en [69+1000 = 1069].
  2. Mit +"" in einen String umwandeln [1069 => "1069"]
  3. Schneiden Sie die erste 1, die sich aus der ersten Multiplikation ergibt ["1069" => "069"]

Für natürliche Auflistungen (Dateien, Verzeichnisse...) ist dies sehr nützlich.

1voto

Tanguy Punkte 2057

Ein einfaches Beispiel für meinen Anwendungsfall (um Millisekunden nie > 999 zu füllen) Sie können die Anzahl der Nullen für Ihren Fall anpassen oder eine allgemeinere Methode verwenden, falls erforderlich.

/**
 * @val integer
 * @zeros padding
 */
function zeroFill(val, zeros)
{
    var str = val.toString();
    if (str.length >= zeros)
        return str;
    str = "000" + str;
    return str.substring(str.length - zeros);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X