From: matz@... (Yukihiro Matsumoto) Date: 1998-08-31T16:35:26+09:00 Subject: [ruby-list:9366] Re: [Q] 一文字ずつの処理について まつもと ゆきひろです In message "[ruby-list:9364] Re: [Q] 一文字ずつの処理について" on 98/08/31, WATANABE Hirofumi 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)の文字列です. まつもと ゆきひろ /:|)