回答:
「g
グローバルに置換(すべて)」の場合と同様に、スタンドはグローバルを表します。
IRBで:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
を呼び出しますreplaceAll
。しかし、Rubyは、g
修飾子を使用するPerlにルーツがあります。そのうちの1つにすぎません。
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"