Ответ 1
g
обозначает глобальное значение, как и в глобальном (все):
В irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
Я просматривал документацию для String
сегодня, и я видел метод :sub
, о котором я никогда не замечал раньше. Я использовал :gsub
, и кажется, что они по сути одинаковы. Может ли кто-нибудь объяснить мне разницу? Спасибо!
g
обозначает глобальное значение, как и в глобальном (все):
В irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
Разница в том, что sub
заменяет только первое вхождение указанного шаблона, тогда как gsub
делает это для всех вхождений (т.е. заменяет глобально).
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 # --- ---