Odpowiedzi:
gOznacza globalny, jak w wymieniać globalnie (wszystkie):
W irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replacei replaceAll. Ale Ruby ma swoje korzenie w Perlu, który używa gmodyfikatora. To tylko jedna z tych rzeczy.
subjest znacznie szybszy niż gsub, jest tutaj benchmark github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by" Jakieś myśli, dlaczego gsub!wydaje się, że znajdowanie / zastępowanie tylko pierwszego wystąpienia podczas korzystania z grup wyrażeń regularnych?
Różnica polega na tym, że subzastępuje tylko pierwsze wystąpienie określonego wzorca, podczas gdy gsubrobi to dla wszystkich wystąpień (to znaczy zastępuje globalnie).
subi gsubwykonaj zastąpienie odpowiednio pierwszego i wszystkich dopasowań.
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"