回答:
tr
単一の文字を置換(翻訳)する場合に使用します。
tr
(正規表現を介さずに)単一の文字に一致するため、最初の文字列引数で文字が同じ順序で出現する必要はありません。文字が見つかると、2番目の文字列引数の同じインデックスにある文字に置き換えられます。
'abcde'.tr('bda', '123')
#=> "31c2e"
'abcde'.tr('bcd', '123')
#=> "a123e"
gsub
正規表現を使用する必要がある場合、またはより長い部分文字列を置換する場合に使用します。
'abcde'.gsub(/bda/, '123')
#=> "abcde"
'abcde'.gsub(/b.d/, '123')
#=> "a123e"
tr
「文字を変換する」のように、名前は「変換する」を意味します。これはまさにそれが行うことです。同じ名前のUnixユーティリティ(あいまいで短い名前でよく知られている)にちなんで名付けられました。
tr
単一の文字を単一の固定文字に置き換えることしかできません(ただし、この種類の複数の一致を1回のtr
呼び出しで配置できます)が高速です。gsub
は正規表現を使用して複雑なパターンに一致させ、複雑な計算結果に置き換えることができますが、よりも低速ですtr
。tr
は、数倍高速ですgsub
。これは、どれほど速くtr
なるかに関するベンチマークですgsub
。 github.com/JuanitoFatas/fast-ruby/blob/master/code/string/...
tr
str
の文字をfrom_str
の対応する文字に置き換えたのコピーを返しますto_str
。to_str
がより小さい場合from_str
、対応を維持するために最後の文字が埋め込まれます。
http://apidock.com/ruby/String/tr
gsub
コピーを返します。str
第二引数の代わりに、パターンのすべての出現で。パターンは通常、正規表現です。文字列として指定された場合、それに含まれる正規表現のメタ文字は文字どおりに解釈\d
されd
ます。
http://apidock.com/ruby/String/gsub