私はいくつかのシングルバイト文字をマルチバイト文字に変換しようとしています。 tr
.
変換する文字が1つだけの場合、変換は機能します。
"\".tr("\", "\")
# => "\"
しかし、さらに文字を追加すると、文字は検出されません。
"\".tr("\¥"", "\¥’")
# => "\"
それはなぜですか、マルチバイト文字をどのように変換できますか?
私はRuby 2.3.3を使用しています。さらに、私は得る:
"\".encoding #=> #<Encoding:utf-8>
"\¥"".encoding #=> #<Encoding:utf-8>
"\¥’".encoding #=> #<Encoding:utf-8>
このRubyのバグですか?
回答:
回答№1は2文字通りのバックスラッシュが最後に来なければなりません。から ドキュメンテーション:(強調が追加されました)
バックスラッシュ文字
エスケープするために使用することができます
^
または-
そして 終了時に表示されない限り、無視されます の範囲または終わりのfrom_str
またはto_str
:
"\abc".tr("\abc", "/def") #=> "\/de"
次のものと同等です。
"\abc".tr("abc", "/def") #=> "\/de"
対:
"\abc".tr("abc\", "def/") #=> "/def"