Méthode replace() : Remplacer des sous-chaînes dans JavaScript

Fonctionnement général

La méthode replace() permet d'intervertir un segment spécifique au sein d'un objet chaîne caractères. Elle peut cibler du texte littéral ou s'appuyer sur un modèle défini par une expression régulière pour effectuer les substitutions.

Syntaxe de base

variableChaîne.replace(expressionRégulière, nouveauContenu)
Paramètre Description
expressionRégulière Obligatoire. Correspond à la séquence recherchée. Si c'est une simple chaîne, elle sera traitée comme du texte brut sans interprétation de motifs spéciaux.
nouveauContenu Obligatoire. Peut être fourni sous forme de nouvelle chaîne de caractères ou d'une fonction générant dynamiquement le résultat du remplacement.

Résultat retourné

Cette fonction ne modifie pas la chaîne originale (immuabilité des strings JS). Elle retourne une copie entière de l'objet chaîne où chaque occurrence trouvée selon les paramètres expressionRégulière a été remplacée par nouveauContenu.

Si le drapeau g (global) est actif dans l'expression régulière, toutes les correspondances sont échangées. Sinon, seul le premier match trouvé est substitué.

Spécificités du remplacement

Le paramètre nouveauContenu supporte des métacaractères spécifiques lors de l'utilisation d'une chaîne classique :

  • $1, $2... : Réinjectent le contenu des groupes de capture numérotés.
  • $& : Insère le texte complet correspondant à la recherche.
  • `$`` : Ajoute le préfixe précédant le motif trouvé.
  • $' : Ajoute le suffixe suivant le motif trouvé.
  • $$ : Permet d'écrire un signe dollar littéral dans la sortie.

Notez qu'il est également possible de passer une fonction en tant que second argument. Cette fonction est invoquée pour chaque correspondance détectée. Ses arguments incluent le texte apparié, les groupes capturés éventuels, l'index de début du match dans la chaîne, et la chaîne source complète.

Applications pratiques

Remplacement simple

Remplace une occurrence unique par défaut.

const phrase = "Bonjour tout le monde";
const resultat = phrase.replace("monde", "planète");
console.log(resultat); // Affiche : Bonjour tout le planète

Remplacement global

L'utilisation du drapeau /g assure que tous les cas similaires sont traités.

let texte = "Apprendre le JS est facile";
let modifie = texte.replace(/le/g, "cette");
console.log(modifie); // Affiche : Apprendre cette JS est facile

Gestion des majuscules via Regex

Dans le cas où la casse importe peu, l'option /i ignore la distinction minuscule/mjauscule.

const mot = "jaVaScRipt";
const normalise = mot.replace(/javascript/i, "JavaScript");
// normalise vaut maintenant "JavaScript"

Inversion de variables de capture

Utiliser des parenthèses pour isoler des parties de la chaîne permet de réorganiser le résultat.

const personne = "Dupont, Marie";
const reformate = personne.replace(/([a-zA-Z]+), ([a-zA-Z]+)/, "$2 $1");
// Reformate : Marie Dupont

Transformation dynamique avec fonction

Pour appliquer une logique complexe, comme rendre chaque mot en majusucle initial, une fonction de rappel est idéale.

const titre = "bonjour le développement web";
const formated = titre.replace(/\b\w+\b/g, (m) => 
  m.charAt(0).toUpperCase() + m.slice(1)
);
// Résultat : Bonjour Le Développement Web

Nettoyage de syntaxe

Ici, on transforme des guillemets typographiques en caractères standards.

const input = '"donnée1", "donnée2"';
const cleaned = input.replace(/"([^"]*)"/g, "'$1'");
// Resulat: 'donnée1', 'donnée2'

Étiquettes: JavaScript string-methods regular-expressions ES6

Publié le 19 octobre à 16h36