Rubyリファレンス: Home

tr, tr! (String)

Edit   History

標準クラス・モジュール > String > tr, tr!

str.tr(from_str, to_str)

trメソッドは、文字列の中で引数from_strに並べた文字を引数to_strに並べた文字に置き換え、新しい文字列を返します。

次の例では、dの字をcに、mの字をrに置き換えています。

s = "dummy"
puts s.tr("dm", "cr")
curry

引数from_strto_strは、正規表現の文字クラスのように-で範囲を指定したり、^で否定を表したりできます(ただし、これは正規表現ではありません)。

to_strが表す文字の数がfrom_strに足りない場合は、to_strの最後の文字が使われます。

s = "8429503671"
puts s.tr("1-9", "A-I")    # 1から9の字をAからIに
puts s.tr("1-9", "ABC#")   # 1から3の字はA,B,C、4から9は#に
puts s.tr("^1-9", "@")     # 1から9の字以外を@に
HDBIE0CFGA
##B##0C##A
84295@3671

Ruby 1.9 Ruby 1.8は文字列を単なるバイト列と見なすので、漢字などの非アスキー文字をうまく扱えません。Ruby 1.9では、非アスキー文字を1文字と見なして処理できます(文字列のバイト列が文字コードとして正しい場合)。

# encoding: utf-8
s = "こんにちは"
puts s.tr("あ-ん", "ア-ン")
コンニチハ    (UTF-8による出力)
str.tr!(from_str, to_str)

tr!メソッドは、レシーバの文字列の中で引数from_strに並べた文字を引数to_strに並べた文字に置き換えます。レシーバを変更するメソッドです。戻り値は、変更があった場合はレシーバ自身、ない場合はnilです。

引数の指定のしかたはtrメソッドと同じです。

s = "dummy"
s.tr!("dm", "cr")
puts s
curry

関連項目