Maison  >  Article  >  interface Web  >  Comment puis-je remplir efficacement des chaînes en JavaScript ?

Comment puis-je remplir efficacement des chaînes en JavaScript ?

DDD
DDDoriginal
2024-11-23 12:31:17823parcourir

How Can I Efficiently Pad Strings in JavaScript?

Fonction JavaScript pour le remplissage de chaîne

Introduction

Le remplissage d'une chaîne implique l'ajout de caractères au début ou à la fin pour atteindre un longueur désirée. Ceci est utile dans divers scénarios, tels que l'alignement dans des tableaux ou le formatage de nombres. Cet article explore une fonction JavaScript qui facilite le remplissage des chaînes.

Solutions pré-ES8

Avant ECMAScript 8 (ES8), les développeurs utilisaient diverses méthodes pour le remplissage des chaînes. Une approche simple consiste à concaténer la chaîne avec une valeur de remplissage prédéfinie et à découper le résultat pour obtenir la longueur souhaitée :

var n = 123;

String("00000" + n).slice(-5); // returns 00123
("00000" + n).slice(-5); // returns 00123
("     " + n).slice(-5); // returns "  123" (with two spaces)

Une autre solution étend l'objet chaîne avec une méthode paddingLeft :

String.prototype.paddingLeft = function (paddingValue) {
   return String(paddingValue + this).slice(-paddingValue.length);
};

Cette méthode peut être utilisée comme suit :

function getFormattedTime(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();

  hours = hours.toString().paddingLeft("00");
  minutes = minutes.toString().paddingLeft("00");

  return "{0}:{1}".format(hours, minutes);
};

String.prototype.format = function () {
    var args = arguments;
    return this.replace(/{(\d+)}/g, function (match, number) {
        return typeof args[number] != 'undefined' ? args[number] : match;
    });
};

ES8 et Beyond

ES8 a introduit la méthode String.padStart, qui simplifie le remplissage des chaînes :

"Jonas".padStart(10); // Default pad string is a space
"42".padStart(6, "0"); // Pad with "0"
"*".padStart(8, "-/|\"); // produces '-/|\-/|*'

Si String.padStart n'est pas disponible, un polyfill peut être utilisé pour l'ajouter. Le polyfill suivant étend l'objet chaîne :

String.prototype.padLeft = function (desiredLength) {
  var padString = " ";
  if (arguments.length > 1) {
    padString = arguments[1];
  }

  var padLength = desiredLength - this.length;
  if (padLength >= 0) {
    return padString.repeat(Math.ceil(padLength / padString.length)).slice(0, padLength) + this;
  } else {
    return this;
  }
};

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