Possible Duplicate:
Comment créer une valeur zero-remplie en utilisant JavaScript ?
En JavaScript, j'ai besoin d'avoir du padding.
Par exemple, si j'ai le nombre 9, il sera de "0009" ;. Si j'ai un nombre de disons 10, il sera de "0010" ;. Remarquez qu'il contiendra toujours quatre chiffres.
Une façon de procéder serait de soustraire le nombre moins 4 pour obtenir le nombre de 0 que je dois mettre.
Existe-t-il un moyen plus simple de le faire ?
Il n'y a pas beaucoup de "slick" jusqu'à présent :
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 initialisez un tableau avec un nombre, il crée un tableau avec la length
fixée à cette valeur de sorte que le tableau semble contenir autant d'éléments undefined
. Bien que certaines méthodes d'instance de Array ignorent les éléments de tableau sans valeur, .join()
ne le fait pas, ou du moins pas complètement ; il les traite comme si leur valeur était la chaîne vide. Ainsi, vous obtenez une copie du caractère zéro (ou de ce qu'est "z" ;) entre chacun des éléments du tableau ; c'est pourquoi il y a un + 1
là-dedans.
Exemple d'utilisation :
pad(10, 4); // 0010
pad(9, 4); // 0009
pad(123, 4); // 0123
pad(10, 4, '-'); // --10
function padToFour(number) {
if (number<=9999) { number = ("000"+number).slice(-4); }
return number;
}
Quelque chose comme ça ?
Bonus incompréhensible-mais-slicker single-line ES6 version:
let padToFour = number => number <= 9999 ? `000${number}`.slice(-4) : number;
ES6ismes :
let
est une variable à portée de bloc (par opposition à la portée fonctionnelle de var
).=>
est une fonction flèche qui remplace entre autres function
et est précédée de ses paramètres.number =>
).return
, vous pouvez omettre les accolades et le mot-clé return
et simplement utiliser l'expression.Essayez :
String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length)
str = padString + str;
return str;
}
Maintenant, testez :
var str = "5";
alert(str.lpad("0", 4)); //result "0005"
var str = "0"; // note this is string type
alert(str.lpad("0", 4)); //result "000"
[DEMO
][
Dans ECMAScript 8 , nous avons une nouvelle méthode [padStart
][2] et [padEnd
][3] qui a la syntaxe suivante.
'string' ;.padStart(targetLength [,padString]) :
Nous pouvons maintenant utiliser
const str = "5";
str.padStart(4, '0'); // '0005'
[
] : /embedded/result,js,html,css/">