wake-up-neo.com

So geben Sie Ganzzahlen mit führenden Nullen in JavaScript aus

Mögliches Duplikat:
Wie kann ich mit JavaScript einen Zerofilled-Wert erstellen?

Ich kann mit math.round auf x Dezimalstellen runden, aber gibt es eine Möglichkeit, links von der Dezimalstelle zu runden? Zum Beispiel wird 5 zu 05, wenn ich 2 Stellen spezifiziere

443
chris

NOTE: Möglicherweise veraltet. ECMAScript 2017 enthält String.prototype.padStart

Du fragst nach Nullpolsterung? Nicht wirklich rund. Sie müssen es in einen String konvertieren, da Zahlen mit führenden Nullen keinen Sinn ergeben. Etwas wie das...

function pad(num, size) {
    var s = num+"";
    while (s.length < size) s = "0" + s;
    return s;
}

Oder wenn Sie wissen, dass Sie niemals mehr als X Nullen verwenden würden, ist dies möglicherweise besser. Dies setzt voraus, dass Sie niemals mehr als 10 Stellen möchten.

function pad(num, size) {
    var s = "000000000" + num;
    return s.substr(s.length-size);
}

Wenn Sie sich für negative Zahlen interessieren, müssen Sie das "-" abziehen und es lesen.

684
InfinitiesLoop

Sie können das Objekt Number erweitern:

Number.prototype.pad = function(size) {
    var s = String(this);
    while (s.length < (size || 2)) {s = "0" + s;}
    return s;
}

Beispiele:

(9).pad();  //returns "09"

(7).pad(3);  //returns "007"
209
Mild Fuzz

Ein anderer Ansatz:

function zeroPad(num, places) {
  var zero = places - num.toString().length + 1;
  return Array(+(zero > 0 && zero)).join("0") + num;
}

zeroPad(5, 2); // "05"
zeroPad(5, 4); // "0005"
zeroPad(5, 6); // "000005"
zeroPad(1234, 2); // "1234" :)
145
CMS

Von https://Gist.github.com/1180489

function pad(a,b){return(1e15+a+"").slice(-b)}

Mit Kommentaren:

function pad(
  a, // the number to convert 
  b // number of resulting characters
){
  return (
    1e15 + a + // combine with large number
    "" // convert to string
  ).slice(-b) // cut leading "1"
}
62
dave1010
function zfill(num, len) {return (Array(len).join("0") + num).slice(-len);}
6
ithinc

Nur zum Spaß (ich hatte etwas Zeit zu töten), eine komplexere Implementierung, die den Zero-String zwischenspeichert:

pad.zeros = new Array(5).join('0');
function pad(num, len) {
    var str = String(num),
        diff = len - str.length;
    if(diff <= 0) return str;
    if(diff > pad.zeros.length)
        pad.zeros = new Array(diff + 1).join('0');
    return pad.zeros.substr(0, diff) + str;
}

Wenn die Anzahl der Auffüllungen groß ist und die Funktion oft genug aufgerufen wird, übertrifft sie tatsächlich die anderen Methoden ...

2
Christoph