irb
バックスラッシュは、ステートメントの結果を出力する方法のためにのみ表示されます。代わりに、gsub
ed文字列をなどの別のメソッドに渡すとputs
、エスケープシーケンスが変換された後に「実際の」表現が表示されます。
1.9.0 > sentence = 'This is a quote, “Hey guys!”'
=> "This is a quote, \342\200\234Hey guys!\342\200\235"
1.9.0 > sentence.gsub('“', "'")
=> "This is a quote, 'Hey guys!\342\200\235"
1.9.0 > puts sentence.gsub('“', "'")
This is a quote, 'Hey guys!”
=> nil
の出力後、への呼び出しが戻ったputs
ことを=> nil
示していることにも注意してください。puts
nil
おかしな引用符がまだ出力の最後にあることに気付いたかもしれませんputs
:これは、引用符が2つの異なるエスケープシーケンスであり、1つだけ名前を付けたためです。しかし、次の正規表現でそれを処理できますgsub
:
1.9.0 > puts sentence.gsub(/(“|”)/, 34.chr)
This is a quote, "Hey guys!"
=> nil
また、多くの場合、Ruby文字列で一重引用符と二重引用符を入れ替えることができます。二重引用符は拡張を実行しますが、一重引用符は実行しません。二重引用符のみを含む文字列を取得する方法はいくつかあります。
1.9.0 > '"' == 34.chr
=> true
1.9.0 > %q{"} == 34.chr
=> true
1.9.0 > "\"" == 34.chr
=> true