安達@沖データです。

#どっか勘違いしているに違いないと思ったんだが。。。

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
*------*