|
[ruby-list:42473] Re: 多量の正規表現との効率的なマッチのアイデアを、、: msg#00127lang.ruby.japanese
From: しん <dezawa-eY1vtc/6GtbR7s880joybQ@xxxxxxxxxxxxxxxx> Subject: [ruby-list:42472] Re: 多量の正規表現との効率的なマッチのアイデアを、、 Date: Fri, 23 Jun 2006 22:07:36 +0900 > IO.foreach が感覚的には良く分ります。 > ところで > 1) これは > IO.foreach(filename) do |line| hogehoge ;end > とあまり変らないような気もするのですがどうなのでしょう。 まぁsplitする場合はなかださんの言うようにchompは不要なのでIO.foreachと 変わりませんね。僕の場合 File.read/File.readlines するのが癖なので使っ た記憶がないです(^^;;; > 1行先読みしたいなぁ、って場合の gets ungets 的な > 使いかたには無理ですよね? > いちどに読みこめないような時は、実装で工夫するしかなさそうですね。 ではこんなので。1行前の内容もブロックに入れてみました。 require 'stringio' # 文字列をIOっぽく扱うStringIO。IOオブジェクトのかわりに使えます。 @io = StringIO.new <<XXXX first line second line third line XXXX def each_line_with_previous_line(io) prev_line = nil io.each_line do |line| begin yield(line, prev_line) ensure prev_line = line end end end # 使用例 each_line_with_previous_line(@io) do |line, prev| line.chomp! prev.chomp! if prev printf("current = %s / previous = %s\n", line.inspect, prev.inspect) end ---- 実行結果 current = "first line" / previous = nil current = "second line" / previous = "first line" current = "third line" / previous = "second line" -- rubikitch http://www.rubyist.net/~rubikitch/
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42472] Re: 多量の正規表現との効率的なマッチのアイデアを、、, しん |
|---|---|
| Next by Date: | [ruby-list:42474] Re: 多量の正規表現との効率的なマッチのアイデアを、、, Itou-T15-l4TFbgTioCUTBYAz+LHnZg |
| Previous by Thread: | [ruby-list:42472] Re: 多量の正規表現との効率的なマッチのアイデアを、、, しん |
| Next by Thread: | [ruby-list:42474] Re: 多量の正規表現との効率的なマッチのアイデアを、、, Itou-T15-l4TFbgTioCUTBYAz+LHnZg |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |