井沢と申します。
以下のファイル(data.xt)のように、見出し(Title)と内容(content)を持つ
ファイルから、条件に合う見出しの内容だけを抽出しようと考えています。
--- data.txt ---
Title-1
Title-A
content1
Title-B
content2
content3
Title-2
Title-A
content4
content5
Title-B
content6
----------------
data.txt から「Title-1」の「Title-B」内容:
content2
content3
だけを抽出しようとして、以下のサンプルを作成してみたのですが、
ネストが深くなるほどフラグや if文を増やさなくてはならないため、
コードが見づらくなることを懸念しています。
(実際にはネストはもっと深く、抽出対象の見出しも沢山あります)
フラグや if文を減らし、すっきりしたコードにするにはどのような
方法が考えられるでしょうか。
--- サンプル ---
flag1 = flag2 = 0
File.readlines("data.txt").each {|line|
# 「Title-1」処理
if line =~ /Title-2/; flag1=0; end # 終了フラグ設定
if line =~ /Title-1/; flag1=1; end # 開始フラグ設定
if flag1 == 1 # 処理
# 「Title1-2」処理
if line =~ /Title-2/; flag2=0; end # 終了フラグ設定
if line =~ /Title-B/ # 開始フラグ設定
flag2=1
next
end
if flag2 == 1 # 処理
puts line.strip
end
end
}
----------------
--- 結果 ---
content2
content3
------------
--------------------------------------
Know more about Breast Cancer
http://pr.mail.yahoo.co.jp/pinkribbon/