J'ai parcouru la documentation pour String
aujourd'hui, et j'ai vu la :sub
méthode, que je n'avais jamais remarquée auparavant. J'utilise :gsub
et il semble qu'ils sont essentiellement les mêmes. Quelqu'un peut-il m'expliquer la différence? Merci!
111
Réponses:
Le
g
signifie global, comme dans replace globalement (all):En irb:
la source
replace
etreplaceAll
. Mais Ruby a ses racines en Perl qui utilise leg
modificateur. C'est juste une de ces choses.sub
c'est beaucoup plus rapide quegsub
, il y a un benchmark ici github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
pensées pourquoigsub!
ne semble trouver / remplacer que la première instance lors de l'utilisation de groupes de regex?La différence est que
sub
ne remplace que la première occurrence du modèle spécifié, alorsgsub
qu'il le fait pour toutes les occurrences (c'est-à-dire qu'il remplace globalement).la source
la source
sub
etgsub
effectuer le remplacement du premier et de tous les matches respectivement.la source