安達@沖データです。 #どっか勘違いしているに違いないと思ったんだが。。。 From: Minero Aoki <aamine / loveruby.net> Subject: [ruby-dev:23142] Re: backslash in string Date: Fri, 5 Mar 2004 17:30:14 +0900 > 青木です。 どもです。神戸さんにも、ども! > > (1) 無意味なバックスラッシュを入れると数が合わない? > > > > irb(main):010:0> " \ab\de\ff" > > => " \abde\ff" > これは仕様通りです。\a と \f は正しいバックスラッシュ記法なので > それぞれベルと改ページに変換される。\d は正しくないので「d」 > そのものになる。 へい。了解です。 > > (2) gsubが正しく動いていない??? > > > irb(main):002:0> " \\ab\\de\\ff".gsub(/\\([a-f][a-f])/o, "\\1".to_i(16).chr) > > => " \000\000\000" > > > > これは、おかしい。 > > gsub は普通のメソッドですから、引数が gsub に渡るまえに > 変形してしまっては意味がありません。"\\1".to_i(16) は 0 です。 あたた、これは大爆笑ものの勘違いですね。 > > irb(main):003:0> " \\ab\\de\\ff".gsub(/\\([a-f][a-f])/o) { | c | > > irb(main):004:1* c.to_i(16).chr > > irb(main):005:1> } > > => " \000\000\000" > > > > これも、おかしい。 > > c は $& 相当で、つまり「\ab」や「\de」です。 > でもって "\\...".to_i は 0 なので、これで正しい結果です。 > $1.to_i(16).chr なら予測通りになると思います。 はぁ、これは純粋に知りませんでした。勉強になります。 -- *------* |人∧鷲| 安達 淳@個人回線 | <女> | Via Asahi-net |牛∨獅| adachi / jun.email.ne.jp *------*