What is the difference between gsub and sub methods for Ruby Strings
RubyStringRuby Problem Overview
I have been perusing the documentation for String
today, and I saw the :sub
method, which I'd never noticed before. I've been using :gsub
and it appears that they are essentially the same. Can anyone explain the difference to me? Thanks!
Ruby Solutions
Solution 1 - Ruby
The g
stands for global, as in replace globally (all):
In irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
Solution 2 - Ruby
The difference is that sub
only replaces the first occurrence of the pattern specified, whereas gsub
does it for all occurrences (that is, it replaces globally).
Solution 3 - Ruby
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 # --- ---
Solution 4 - Ruby
sub
and gsub
perform replacement of the first and all matches respectively.
sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
sub("4", "8", "An Introduction to R Software Course will be of 4 weeks duration" )
##"An Introduction to R Software Course will be of 8 weeks duration"
gsub("4", "8", "An Introduction to R Software Course will be of 4 weeks duration" )
##"An Introduction to R Software Course will be of 8 weeks duration"