Відповіді:
Поняття g
глобального, як замість глобального (усі):
У irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
та replaceAll
. Але Ruby має коріння в Perl, який використовує g
модифікатор. Це просто одна з таких речей.
sub
набагато швидше, ніж gsub
тут є орієнтир github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
Будь-які думки, чому, gsub!
здається, лише знаходять / замінюють лише перший екземпляр під час використання груп регулярних виразів?
Різниця полягає в тому, що sub
замінює лише перше виникнення зазначеного шаблону, тоді як gsub
робить це для всіх подій (тобто замінює глобально).
sub
і gsub
виконувати заміну першого та всіх матчів відповідно.
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"