大橋です。

In the message "[ruby-list:9364] Re: [Q] 一文字ずつの処理について"
	WATANABE Hirofumi <watanabe / ase.ptg.sony.co.jp> wrote:
> それじゃ 1 バイトごとになっちゃうから,
> やっぱり scan とか split を使わないとまずいですよね.

「scan」というメソッドもおもしろそうですね。正規表現でぬきだしたい文字の条件
も指定できるので「split」よりこの方がいいかもしれません。

In the message "[ruby-list:9375] Re: [Q]一文字ずつの処理について"
	Inaba Hiroto <inaba / st.rim.or.jp> wrote:
> splitよりscanの方が、効率が良い場合もありそうです。
> 
>   class String
>     def each_char(&block)
>       scan(/[\s\S]/, &block)
>     end
>   end
> 
> 一文字ずつの処理が、かならずしも最後の一文字まで処理するわけではない場
> 合などを考えると。

すいません、超初歩的な質問ですが、

1.「&block」って何でしょうか。

2.each_charメソッドの定義は、Stringクラスの定義されているらしい「jcode.rb」
に挿入すればよいのでしょうか。(libの下の.rbファイルをサーチしてみたらclass
Stringという文字列があったので、そう思っただけです)

ちょっと、rbc.rbで遊んでみました。

rbc0> e = "1a2b3c"
"1a2b3c"
rbc0> e.scan(/[0-9]/)
["1", "2", "3"]
rbc0> e.scan(/[^0-9]/)
["a", "b", "c"]
rbc0> j = "一あ二い三う"
"一あ二い三う"
rbc0> j.scan(/[あ-ん]/)
["あ", "い", "う"]
rbc0> j.scan(/[^あ-ん]/)
[]

正規表現の指定方法がおかしいのか、最後のj.scan(/[^あ-ん]/)の結果が予想とちが
います。「一二三」が返ってくるのかと思いました。へんでしょうか。

大橋弘靖 <hohasi / cb3.so-net.ne.jp>