695 votes

Pad un nombre avec des zéros en JavaScript

Double Possible:
Comment puis-je créer un Zerofilled valeur à l'aide de JavaScript?

En javascript, j'ai besoin de rembourrage.

Par exemple, si j'ai le numéro 9, il sera "0009". Si j'ai un nombre de 10, il sera "0010". Remarquez comment il sera toujours contenir 4 chiffres.

Une façon de le faire serait de soustraire le nombre moins 4 pour obtenir le nombre de 0s j'ai besoin de mettre.

Je me demandais si il y avait un ciré moyen de le faire.

971voto

Pointy Points 172438

Pas beaucoup de "slick" en cours à ce jour:

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

Lorsque vous initialiser un tableau avec un nombre, il crée un tableau avec l' length à la valeur de sorte que le tableau semble contenir que nombre undefined - éléments. Bien que certains Éventail de méthodes d'instance ignorer les éléments du tableau sans valeurs, .join() n'est pas, ou du moins pas complètement, il les traite comme si leur valeur est la chaîne vide. Ainsi, vous pouvez obtenir une copie du caractère zéro (ou que ce soit "z") entre chacun des éléments du tableau; c'est pourquoi il y a un + 1 .

Exemple d'utilisation:

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

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

278voto

Robin Points 1856
- Oui, quelque chose de ce genre la.

246voto

diEcho Points 22385

ESSAYER

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

maintenant tester:

 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

71voto

alpha123 Points 3600

C'est drôle, j'ai récemment dû faire ça.

 function padDigits(number, digits) {
    return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
}
 

Utilisez comme:

 padDigits(9, 4);  // "0009"
padDigits(10, 4); // "0010"
padDigits(15000, 4); // "15000"
 

Pas beau, mais efficace.

25voto

kennebec Points 33886

Vous avez dit que vous aviez un numéro ...

 String.prototype.padZero= function(len, c){
    var s= '', c= c || '0', len= (len || 2)-this.length;
    while(s.length<len) s+= c;
    return s+this;
}
Number.prototype.padZero= function(len, c){
    return String(this).padZero(len,c);
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X