まつもと ゆきひろです

In message "[ruby-list:9364] Re: [Q] 一文字ずつの処理について"
    on 98/08/31, WATANABE Hirofumi <watanabe / ase.ptg.sony.co.jp> writes:

|:|全角・半角混じりの文字列を一文字ずつ処理したいのですが、String型のインスタン
|:|スにeachを送っても、分解されずにそのままが返ってきます。(実はFixedNumが返っ
|:|てくるのかなと思っていました。)
|:
|:そーゆー時にはeach(行単位)でなくeach_byteを使って下さい.
|
|それじゃ 1 バイトごとになっちゃうから,
|やっぱり scan とか split を使わないとまずいですよね.

あ,「全角・半角混じりの文字列」の部分を完全に見落としてまし
た.そーですねえ.そういう時にはeach系は使えませんね.
each_charなんてのを用意してjcodeでoverrideするか.

# いや,結局はsplitに還元されるんですけどね.

原理は簡単

  class String
    def each_char(&block)
      split(//).each(&block)
    end
  end

なんてしておいて

  "aあア".each_char do |c|
    print c, "\n"
  end

で

  a
  あ
  ア

となるような感じなんですけどね.この場合のcは1文字(長さ1また
は2)の文字列です.
                                まつもと ゆきひろ /:|)