Risposte:
L' g
acronimo di Global, come in sostituzione a livello mondiale (tutto):
In irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
e replaceAll
. Ma Ruby ha le sue radici in Perl che usa il g
modificatore. È solo una di quelle cose.
sub
è molto più veloce di gsub
, c'è un benchmark qui github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
Qualche idea sul perché gsub!
sembra solo trovare / sostituire solo la prima istanza quando si usano i gruppi regex?
La differenza è che sub
sostituisce solo la prima occorrenza del pattern specificato, mentre lo gsub
fa per tutte le occorrenze (ovvero, sostituisce globalmente).
sub
ed gsub
eseguire la sostituzione rispettivamente della prima e di tutte le partite.
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"