Méthode: String #gsub

Renvoie une copie de str avec toutes les occurrences de pattern substituées au deuxième argument. Le motif est généralement une expression rationnelle; s’il est donné sous forme de chaîne, tous les métacaractères d’expression régulière qu’il contient seront interprétés littéralement, par exemple \d correspondra à une barre oblique inverse suivie de ‘d’, au lieu d’un chiffre.

Si replacement est une chaîne, il sera remplacé par le texte correspondant. Il peut contenir des renvois aux groupes de capture du modèle de la forme \d, où d est un numéro de groupe, ou \k<n>, où n est un nom de groupe. De même, \&, \', \`, et + correspondent à des variables spéciales, $&, $', $`, et $+, respectivement. (Voir expression régulière.rdoc pour plus de détails.) est identique à \&. \ est interprété comme un échappement, c’est-à-dire une barre oblique inverse unique. Notez que, dans replacement, les variables de correspondance spéciales, telles que $&, ne feront pas référence à la correspondance actuelle.

Si le deuxième argument est un hachage et que le texte correspondant est l’une de ses clés, la valeur correspondante est la chaîne de remplacement.

Sous la forme de bloc, la chaîne de correspondance en cours est transmise en tant que paramètre et des variables telles que , , $`, $&, et $' sera défini de manière appropriée. (Voir expression régulière.rdoc pour plus de détails.) La valeur renvoyée par le bloc sera substituée à la correspondance à chaque appel.

Lorsque ni un bloc ni un deuxième argument n’est fourni, un énumérateur est renvoyé.

"hello".gsub(//, '*') #=> "h*ll*""hello".gsub(/()/, '<>') #=> "h<e>ll<o>""hello".gsub(/./) {|s| s.ord.to_s + ' '} #=> "104 101 108 108 111 ""hello".gsub(/(?<foo>)/, '{\k<foo>}') #=> "h{e}ll{o}"'hello'.gsub(//, 'e' => 3, 'o' => '*') #=> "h3ll*"

Notez qu’un littéral de chaîne consomme des barres obliques inverses. (Voir syntaxe/littéraux.rdoc pour plus de détails sur les littéraux de chaînes.) Les références arrières sont généralement précédées d’une barre oblique inverse supplémentaire. Par exemple, si vous souhaitez écrire une référence arrière \& dans replacement avec un littéral de chaîne entre guillemets doubles, vous devez écrire: "..\&..". Si vous souhaitez écrire une chaîne sans référence arrière \& dans replacement, vous devez d’abord échapper à la barre oblique inverse pour empêcher cette méthode de l’interpréter comme une référence arrière, puis vous devez à nouveau échapper aux barres obliques inverses pour empêcher un littéral de chaîne de les consommer: "..\\&..". Vous voudrez peut-être utiliser le formulaire de bloc pour éviter de nombreuses barres obliques inverses.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.