3 Awesome Ways To Use Ruby’s Gsub Method
On octobre 4, 2021 by adminParlons de la méthode gsub
de Ruby.
D’abord, vous aurez besoin d’une chaîne de caractères pour jouer avec cette méthode.
Pourquoi ?
Parce que vous utilisez gsub
sur une chaîne de caractères pour en remplacer des parties.
En fait :
Le « sub » dans « gsub » signifie « substitut », et le « g » signifie « global ».
Vous avez votre chaîne de caractères ?
Bien.
Sinon, vous pouvez emprunter la mienne.
Voici:
str = "white chocolate"
Disons que nous voulons remplacer « blanc » par « foncé ».
Voici comment :
str.gsub("white", "dark")
Ceci veut dire :
Donné la chaîne str
, commandez-lui de remplacer TOUTES les occurrences du premier mot (white
) par le deuxième mot (dark
).
Ce qui veut dire qu’on va pouvoir manger du bien meilleur chocolat.
Oh attendez, c’est juste une chaîne de caractères.
On ne peut pas manger ça !
En tout cas…
La méthode gsub
de Ruby peut faire bien plus qu’une simple substitution.
Voyons quelques exemples.
Remplacer des motifs avec une expression régulière
Remplacer un seul mot est bien.
Mais si vous pouviez remplacer un motif ?
Comme :
Une année, une adresse email, un numéro de téléphone, etc.
Vous pouvez !
Voici un exemple :
"a1".gsub(/\d/, "2")# "a2"
Le premier argument est une expression régulière, et c’est trop à couvrir ici.
Mais c’est un langage de correspondance de motifs.
Dans ce cas, \d
recherche des nombres, comme le « 1 » dans « a1 ».
Vous pouvez également faire ceci :
"a1".gsub(/(\w)(\d)/, '')
Ce qui donne :
"1a"
Nous avons changé l’ordre !
Cela fonctionne en utilisant une fonctionnalité appelée « groupes de capture ».
Nous pouvons utiliser les groupes comme pour le premier groupe,
pour le deuxième groupe, etc.
Les groupes sont créés avec des parenthèses.
Gsub avancé avec les blocs
Les choses deviennent vraiment intéressantes lorsque vous commencez à utiliser gsub avec un bloc.
Pourquoi ?
Parce que dans un bloc, vous pouvez utiliser la logique pour décider comment remplacer quelque chose.
Au lieu d’utiliser une valeur statique.
Par exemple :
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
On trouve l’animal avec \w+
, ce qui signifie « un ou plusieurs caractères alphanumériques ».
Alors:
- Si c’est un « chien », on le remplace par « chat »
- Si le mot est autre chose, on le remplace par « chien »
Ce genre de logique n’est pas possible avec une valeur statique, le 2e paramètre de gsub.
Remplacer plusieurs termes avec un hash
Si vous avez une liste de substitutions à faire, vous pouvez utiliser un hash.
Comme celui-ci:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Cela fonctionne comme un dictionnaire de traduction, où les clés seront remplacées par leurs valeurs.
Voici un exemple:
"BBBGR".gsub(/\w/, colors)
Ce qui donne:
"bluebluebluegreenred"
Assurez-vous que votre 1er argument correspondra aux clés.
Dans ce cas, \w
correspond à des caractères individuels, donc il correspondra à « B » puis le remplacera par « bleu ».
Summary
Vous avez appris la méthode gsub en Ruby ! C’est une méthode puissante qui vous permet de remplacer, ou substituer des caractères à l’intérieur d’une chaîne de caractères.
Elle a de multiples usages :
- Suppression des caractères invalides (en faisant du 2e argument une chaîne vide)
- Remplacement des caractères de remplacement &des acronymes par leurs valeurs complètes
- Utilisation de motifs &logiques pour modifier une chaîne
Maintenant, c’est à votre tour de vous exercer avec cette méthode afin de faire en sorte que vos nouvelles connaissances soient retenues.
Merci de lire 🙂
Laisser un commentaire