では動作しませんtest.rbというサンプルコードです:は、%Q表記でエスケープすることはここではIRB
s = %Q_abc\_def\_ghi_
puts s
s = %q_abc\_def\_ghi_
puts s
予想通りそれは正常に動作します:
➜ Desktop ruby test.rb
abc_def_ghi
abc_def_ghi
しかし、私はそれを実行したときIRBには、何もs = %q_abc\_def\_ghi_
後に起こらなかっ:
➜ Desktop irb
irb(main):001:0> s = %Q_abc\_def\_ghi_
=> "abc_def_ghi"
irb(main):002:0> puts s
abc_def_ghi
=> nil
irb(main):003:0>
irb(main):004:0* s = %q_abc\_def\_ghi_
irb(main):005:1> puts s
irb(main):006:1>
irb(main):007:1*
irb(main):008:1*
それは動作しませんなぜ?そして、どうすれば '_'(または他の区切り文字)を%q表記でエスケープできますか?
私のRubyのバージョンは次のとおりです。これはRubyのファイルとIRBで異なる表示されますが、小文字パーセント文字列をエスケープしない理由
ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
「%q」はエスケープシーケンスを認識しないと思います。しかし、なぜエスケープを必要としない別の文字 '%q {abc_def_ghi_} 'を選択しないのかわかりません –
私が'%q_abc \ _def \ _ghi_'を選択したのは学習目的のためです。私は '%q {abc_def_ghi_} 'が自然なことを理解しています。しかし、私はちょうどWHYを知りたい。 –
プレーンテキストの入力または出力をプレーンテキストとして試して貼り付けます。スクリーンショットは、一部の人々が使用するのが難しいです。 – tadman