Juste pour démontrer la flexibilité de javascript : vous pouvez utiliser un oneliner pour ceci
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 voulez l'utiliser pour les nombres négatifs également :
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 voulez 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);
}
0 votes
C'est la seule condition pour transformer
1
en0001
ou bien est-il nécessaire d'ajouter 4 chiffres à toutes les chaînes de caractères, en utilisant des zéros comme caractères de remplacement ? C'est ce que vous semblez demander.0 votes
Je veux convertir toutes les chaînes de caractères en 4 chiffres en utilisant les '0' comme caractères de remplacement.
5 votes
La meilleure et la plus intelligente des réponses sur stackoverflow.com/questions/13859538/
("0000" + n).slice(-4)
0 votes
Ou si votre chaîne peut être plus longue que 4 chiffres :
(pad + mystr).slice(-Math.max(pad.length, mystr.length))
(même page, commentaire de Bruno)2 votes
Il y a un padStart dans la spécification JavaScript maintenant. Si
x
contient l'entier1
vous pouvez écrire`${x}`.padStart(4, '0')
(si vous voulez, vous pouvez simplement écrirex.padStart(4, '0')
six
est déjà une chaîne de caractères plutôt qu'un nombre entier).