kind=defined
names=tr_s
visibility=public

--- tr_s(pattern, replace) -> String

文字列の中に pattern 文字列に含まれる文字が存在したら、
replace 文字列の対応する文字に置き換えます。さらに、
置換した部分内に同一の文字の並びがあったらそれを 1 文字に圧縮します。

pattern の形式は [[man:tr(1)]] と同じです。
つまり「a-c」は a から c を意味し、
"^0-9" のように文字列の先頭が「^」の場合は指定した文字以外が置換の対象になります。

replace でも「-」を使って範囲を指定できます。

「-」は文字列の両端にない場合にだけ範囲指定の意味になります。
同様に、「^」もその効果は文字列の先頭にあるときだけです。
また、「-」、「^」、「\」はバックスラッシュ (「\」) でエスケープできます。

replace の範囲が pattern の範囲よりも小さい場合、
replace の最後の文字が無限に続くものとして扱われます。

@param pattern    置き換える文字のパターン
@param replace    pattern で指定した文字を置き換える文字

例:
    p "gooooogle".tr_s("o", "X")       # => "gXgle"
    p "gooooogle".tr_s("a-z", "A-Z")   # => "GOGLE"

注意:
一般に、tr_s を tr と squeeze で置き換えることはできません。
tr と squeeze の組みあわせでは tr の置換後の文字列全体を squeeze しますが、
tr_s は置換された部分だけを squeeze します。
以下のコードを参照してください。

    p "foo".tr_s("o", "f")              # => "ff"
    p "foo".tr("o", "f").squeeze("f")   # => "f"

@see [[m:String#tr]]

