Une méthode plus rapide
Si vous effectuez cette opération de manière répétée, par exemple pour compléter les valeurs d'un tableau, et que les performances sont un facteur déterminant, l'approche suivante peut vous permettre d'obtenir un résultat proche de celui que vous attendiez. Avantage de 100x en vitesse ( jsPerf ) par rapport à d'autres solutions qui sont actuellement discutées sur l'internet. L'idée de base est que vous fournissez à la fonction pad une chaîne de caractères vide entièrement rembourrée à utiliser comme tampon. La fonction pad se contente d'ajouter la chaîne à ajouter à cette chaîne pré-calculée (une seule chaîne concat), puis de découper le résultat à la longueur souhaitée.
function pad(pad, str, padLeft) {
if (typeof str === 'undefined')
return pad;
if (padLeft) {
return (pad + str).slice(-pad.length);
} else {
return (str + pad).substring(0, pad.length);
}
}
Par exemple, pour mettre à zéro un nombre à 10 chiffres,
pad('0000000000',123,true);
Pour compléter une chaîne de caractères avec des espaces, de sorte que la chaîne entière compte 255 caractères,
var padding = Array(256).join(' '), // make a string of 255 spaces
pad(padding,123,true);
Test de performance
Voir le jsPerf test ici .
Et c'est plus rapide que l'ES6 string.repeat
par 2 fois également, comme le montre la version révisée de JsPerf ici
Veuillez noter que jsPerf
n'est plus en ligne
Veuillez noter que le site jsPerf que nous utilisions à l'origine pour évaluer les différentes méthodes n'est plus en ligne. Malheureusement, cela signifie que nous ne pouvons pas accéder aux résultats de ces tests. Triste mais vrai.
11 votes
"Jonas".padStart(7, " ") developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/
1 votes
Comme @Aus l'a suggéré, ignorez ces anciennes réponses et utilisez simplement les "nouvelles" fonctions de rembourrage -. str.padStart(7, " ") y str.padEnd(7, " ")
0 votes
Cette réponse avec le système standard, maintenant intégré
padStart
ypadEnd
devrait être celui qui est accepté maintenant. (Présente dans tous les principaux navigateurs ; IE11 ou même des versions antérieures peuvent être polychargées).