web-dev-qa-db-fra.com

Quelle est la différence entre les méthodes gsub et sub pour Ruby Strings

J'ai parcouru la documentation de String aujourd'hui et j'ai vu la méthode :sub, que je n'avais jamais remarquée auparavant. J'ai utilisé :gsub et il semble qu'ils soient essentiellement les mêmes. Quelqu'un peut-il m'expliquer la différence? Merci!

92
Ryanmt

g signifie global, comme dans replace globally (all):

En irb:

>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
175
Ray Toal

La différence est que sub ne remplace que la première occurrence du modèle spécifié, alors que gsub le fait pour toutes les occurrences (c'est-à-dire qu'il remplace globalement). 

22
Chris Bunch
value = "abc abc"
puts value                                # abc abc
# Sub replaces just the first instance.
value = value.sub("abc", "---")
puts value                                # --- abc
# Gsub replaces all instances.
value = value.gsub("abc", "---")
puts value                                # --- ---
0
deepak