Maison  >  Article  >  interface Web  >  Explication détaillée des méthodes padStart() et padEnd() en JavaScript

Explication détaillée des méthodes padStart() et padEnd() en JavaScript

青灯夜游
青灯夜游original
2020-12-09 18:01:365018parcourir

Explication détaillée des méthodes padStart() et padEnd() en JavaScript

ES2017 introduit la fonction de longueur de complétion de chaîne. Si une corde n’est pas assez longue, elle sera complétée au niveau de la tête ou de la queue. padStart() est utilisé pour la complétion de la tête. ,padEnd() est utilisé pour la complétion de la queue.

const string = 'hi';

string.padStart(3, 'c'); // "chi"

string.padEnd(4, 'l'); // "hill"

Syntaxe

string.padStart(<maxLength>, <padString>)

string.padEnd(<maxLength>, <padString>)

Comprendre les paramètres

padEnd et padStart acceptent les mêmes paramètres.

1. maxLength

La longueur de la chaîne finale.

const result = string.padStart(5);

result.length; // 5

Quand j'ai vu ça, il m'a aussi fallu du temps pour apprendre. J'ai toujours pensé que maxLength était le nombre de fois que le paramètre de chaîne était rempli à plusieurs reprises. Alors ici, je veux juste 强调一下Ce paramètre est 当前字符串需要填充到的目标长度,不是填充字符串重复的次数. Si cette valeur est inférieure à la longueur de la chaîne actuelle, la chaîne actuelle elle-même est renvoyée.

Bien sûr, je pense que les lecteurs sont beaucoup plus intelligents que moi, donc je suis sûr que vous n'avez pas cette confusion ??

padString

padString représente une chaîne de remplissage. Si la chaîne est trop longue et que la longueur de la chaîne complétée dépasse la longueur cible, seule la partie la plus à gauche est conservée et les autres parties sont tronquées. La valeur par défaut de ce paramètre est un espace " " (U+0020.

&#39;hi&#39;.padStart(5);

// 等价于
&#39;hi&#39;.padStart(5, &#39; &#39;);

Si vous passez une chaîne vide, rien ne sera rempli. Comment gérer

const result = &#39;hi&#39;.padStart(5, &#39;&#39;);

result; // "hi"
result.length; // 2

Autres données types

Pour le deuxième paramètre padString, il accepte un string Si nous essayons de le passer dans d'autres types de données, il appellera la méthode toString pour forcer sa conversion en chaîne. . Voyons ce qui se passe lorsque nous utilisons toString sur différents types de valeur

// Number
(100).toString(); // &#39;100&#39;

// Boolean
true.toString();   // &#39;true&#39;
false.toString();  // &#39;false&#39;

// Array
[&#39;A&#39;].toString(); // &#39;A&#39;
[&#39;&#39;].toString();  // &#39;&#39;

// Object
({}).toString();         // &#39;[object Object]&#39;
({hi: &#39;hi&#39;}).toString(); // &#39;[object Object]&#39;

Avec cette connaissance, voyons si nous pouvons transmettre ces autres types de valeur à padStart (padEnd a le même comportement).

&#39;SAM&#39;.padStart(8, 100);    // &#39;10010SAM&#39;

&#39;SAM&#39;.padStart(8, true);   // &#39;truetSAM&#39;
&#39;SAM&#39;.padStart(8, false);  // &#39;falseSAM&#39;

&#39;SAM&#39;.padStart(5, [&#39;&#39;]);   // &#39;SAM&#39;
&#39;SAM&#39;.padStart(5, [&#39;hi&#39;]); // &#39;hiSAM&#39;

&#39;SAM&#39;.padStart(18, {});         // &#39;[object Object]SAM&#39;
&#39;SAM&#39;.padStart(18, {hi: &#39;hi&#39;}); // &#39;[object Object]SAM&#39;

poignées undefined

Voici un exemple intéressant si l'on force undefined à Pour une chaîne, on obtient un TypeError :

undefined.toString(); // TypeError: Cannot read property &#39;toString&#39; of undefined

, mais quand on passe undefined comme deuxième paramètre à padStart, on obtient ceci :

&#39;SAM&#39;.padStart(10, undefined);
// &#39;       SAM&#39;

Donc ce qui est dit plus haut Le paramètre padString sera forcé à être converti en chaîne en utilisant toString, mais cela semble encore faux ??. Jetons d'abord un coup d'œil à la spécification :

Spécification ECMAScript  : Si remplie La chaîne est undefined , et la chaîne remplie sera normalisée en espaces (0x0020)

Eh bien, corrigeons cela, à l'exception de undefined, sinon tous les autres types de données transmis seront utilisés toString Forcés de se convertir en chaîne. .

Et si padString dépasse maxLength ?

Si la valeur maxLength est inférieure ou égale à la longueur de la chaîne actuelle, renvoie la chaîne actuelle elle-même >

&#39;hi&#39;.padEnd(2, &#39;SAM&#39;);
// &#39;hi&#39;

If.

est inférieur à la longueur de maxLength, alors padString sera tronqué padString

&#39;hi&#39;.padEnd(7, &#39;SAMANTHA&#39;);
// &#39;hiSAMAN&#39;

padStart/padEnd vs padLeft/padRight

a trim.

  • est un alias pour trimLeft trimStart
  • est un alias pour trimRight trimStart
mais pour la méthode de remplissage de chaîne, il existe pas d'alias. Par conséquent, n'utilisez pas

et padLeft, ils n'existent pas. C'est pourquoi il est recommandé de ne pas utiliser l'alias padRight, afin qu'il y ait une cohérence dans la base de code ??trim

Utilisation pratique

Utilisez padStart pour aligner à droite la chaîne

console.log(&#39;JavaScript&#39;.padStart(15));
console.log(&#39;HTML&#39;.padStart(15));
console.log(&#39;CSS&#39;.padStart(15));
console.log(&#39;Vue&#39;.padStart(15));

Le résultat obtenu

     JavaScript
           HTML
            CSS
            Vue

Codage numérique

const bankNumber = &#39;2222 2222 2222 2222&#39;;
const last4Digits = bankNumber.slice(-4);

last4Digits.padStart(bankNumber.length, &#39;*&#39;);
// ***************2222

Prise en charge du navigateur

et padStart ont été introduits en même temps, ils partagent donc un support de navigateur similaire À l'exception d'IE, les deux peuvent être utilisés ??padEnd

Adresse originale : https : //dmitripavlutin.com/replace-all-string-occurrences-javascript/

Auteur : Dmitri Pavlutin

Adresse de traduction : https://segmentfault.com/a/1190000023721944

Pour plus de connaissances liées à la programmation, veuillez visiter :

Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn