Maison > interface Web > js tutoriel > le corps du texte

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

青灯夜游
Libérer: 2020-12-09 18:01:36
original
4983 Les gens l'ont consulté

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"
Copier après la connexion

Syntaxe

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

string.padEnd(<maxLength>, <padString>)
Copier après la connexion

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
Copier après la connexion

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;);
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

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

&#39;SAM&#39;.padStart(10, undefined);
// &#39;       SAM&#39;
Copier après la connexion

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;
Copier après la connexion

If.

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

&#39;hi&#39;.padEnd(7, &#39;SAMANTHA&#39;);
// &#39;hiSAMAN&#39;
Copier après la connexion

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));
Copier après la connexion

Le résultat obtenu

     JavaScript
           HTML
            CSS
            Vue
Copier après la connexion

Codage numérique

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

last4Digits.padStart(bankNumber.length, &#39;*&#39;);
// ***************2222
Copier après la connexion
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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!