Convertir '1' en '0001' en JavaScript

Duplication possible:
Existe-t-il une fonction JavaScript qui peut relayer une chaîne pour atteindre une longueur déterminée?

Comment puis-je convertir convert '1' en '0001' en JavaScript sans utiliser de bibliothèques tierces. J'ai fait cela en php en utilisant spritf: $time = sprintf('%04.0f',$time_arr[$i]);

C'est un petit truc intelligent (que je pense avoir vu sur SO avant):

 var str = "" + 1 var pad = "0000" var ans = pad.substring(0, pad.length - str.length) + str 

Le JavaScript est plus indulgent que certaines langues si le second argument de sous-chaîne est négatif, de sorte qu'il «débordera correctement» (ou ne dépend pas de la façon dont il est visualisé):

C'est ce qui suit:

  • 1 -> "0001"
  • 12345 -> "12345"

Le soutien des nombres négatifs est laissé comme un exercice 😉

Bon codage.

Juste pour démontrer la flexibilité de javascript: vous pouvez utiliser un oneliner pour cela

 function padLeft(nr, n, str){ return Array(n-String(nr).length+1).join(str||'0')+nr; } //or as a Number prototype method: Number.prototype.padLeft = function (n,str){ return Array(n-String(this).length+1).join(str||'0')+this; } //examples console.log(padLeft(23,5)); //=> '00023' console.log((23).padLeft(5)); //=> '00023' console.log((23).padLeft(5,' ')); //=> ' 23' console.log(padLeft(23,5,'>>')); //=> '>>>>>>23' 

Si vous souhaitez l'utiliser pour les nombres négatifs,

 Number.prototype.padLeft = function (n,str) { return (this < 0 ? '-' : '') + Array(n-String(Math.abs(this)).length+1) .join(str||'0') + (Math.abs(this)); } console.log((-23).padLeft(5)); //=> '-00023' 

Alternative si vous ne souhaitez pas utiliser Array :

 number.prototype.padLeft = function (len,chr) { var self = Math.abs(this)+''; return (this<0 && '-' || '')+ (String(Math.pow( 10, (len || 2)-self.length)) .slice(1).replace(/0/g,chr||'0') + self); } 
 String.prototype.padZero= function(len, c){ var s= this, c= c || '0'; while(s.length< len) s= c+ s; return s; } 

Déposez le nom, vous pouvez quitter n'importe quel personnage, y compris un espace. Je n'ai jamais utilisé le rembourrage du côté droit, mais ce serait assez facile.

J'utilise l'objet suivant:

 function Padder(len, pad) { if (len === undefined) { len = 1; } else if (pad === undefined) { pad = '0'; } var pads = ''; while (pads.length < len) { pads += pad; } this.pad = function (what) { var s = what.toString(); return pads.substring(0, pads.length - s.length) + s; }; } 

Avec cela, vous pouvez facilement définir différents "rembourrages":

 var zero4 = new Padder(4); zero4.pad(12); // "0012" zero4.pad(12345); // "12345" zero4.pad("xx"); // "00xx" var x3 = new Padder(3, "x"); x3.pad(12); // "x12"