tr(pattern, replace) -> String[permalink][rdoc][edit]tr(hash) -> String(selector source, string replacement) → String-
pattern 文字列に含まれる文字を検索し、それを replace 文字列の対応する文字に置き換えます。
pattern の形式は tr(1) と同じです。つまり、
a-cは a から c を意味し、"^0-9" のように文字列の先頭が^の場合は指定文字以外が置換の対象になります。replace に対しても
-による範囲指定が可能です。-は文字列の両端にない場合にだけ範囲指定の意味になります。^も文字列の先頭にあるときにだけ否定の効果を発揮します。また、-,^, `\' はバックスラッシュ (`\') によりエスケープできます。replace の範囲が pattern の範囲よりも小さい場合は、 replace の最後の文字が無限に続くものとして扱われます。
Ruby 4.1 から、引数に Hash を 1 つだけ渡す形式も使えます。この形式では、
hashのキー(1 文字の文字列)に一致する文字を、対応する値の文字列に置き換えます。値は任意の長さの文字列で、空文字列を指定するとその文字が削除されます。文字列に含まれないキーは無視されます。置き換えた結果に対して、さらに置き換えが行われることはありません。hashのキーが 1 文字でない文字列(空文字列を含む)の場合は ArgumentError、キーや値が文字列でない場合は TypeError が発生します。tr("el", {"e" => "EE"})のように、2 つの引数のどちらかに Hash を渡した場合も TypeError が発生します。- [PARAM]
pattern: - 置き換える文字のパターン
- [PARAM]
replace: - pattern で指定した文字を置き換える文字
- [PARAM]
hash: - 置き換える文字(キー)と置き換え後の文字列(値)の対応
Hash を渡す例p "foo".tr("f", "X") # => "Xoo" p "foo".tr('a-z', 'A-Z') # => "FOO" p "FOO".tr('A-Z', 'a-z') # => "foo" # シーザー暗号の復号 p "ORYV".tr("A-Z", "D-ZA-C") # => "RUBY" # 全角英数字といくつかの記号の半角化 email = "ruby−lang@example.com" p email.tr("0-9a-zA-Z.@−", "0-9a-zA-Z.@-") # => "ruby-lang@example.com"p "hello".tr({"e" => "EE", "l" => "L"}) # => "hEELLo" p "hello".tr({"e" => ""}) # => "hllo" p "hello".tr({"e" => "1", "x" => "2"}) # => "h1llo" p "héllo".tr({"é" => "e"}) # => "hello" p "hello".tr({"l" => "L", "L" => "z"}) # => "heLLo" "hello".tr({"ll" => "L"}) # ~> ArgumentError: keys must be of size 1[SEE_ALSO] String#tr!, String#tr_s
- [PARAM]