私は次のように機能するプログラムでプロジェクトを行っています:
- ユーザーは、必要な最小および最大の難易度を入力します。
- プログラムは、問題と解答を含むファイルを読み取り、難易度に応じて問題を出力します。
- ユーザーが質問に答えます。
- ユーザーの回答が実際の回答と比較されます。
ファイルは次のようになります。
D 1
Q What color are the clouds?
A white
D 2
Q What is 3 + 4?
A 7
D 1
質問と回答だけを取得したいとします。D 1
と次の 2 行 (Q
と)を読み取ることができる正規表現を作成する必要がありA
ます。これは私がこれまでに思いついたものです:
if(File.exists?("quiz.txt"))
myFile = File.open("quiz.txt")
array = Array.new
i = 0
q = nil
d = nil
a = nil
answer_array = Array.new
myFile.each{|line|
if(line =~ (/^D #{minimum}/ =~ line || /^D #{maximum}/ =~ line))
d = line
d.slice!(0..1)
if(/^Q/ =~ line)
i= i+1
q = line
q.slice!(0..1)
end
if(/^A/ =~ line)
a = line
a.slice!(0..1)
end
end
}
私が持っているものは機能しません。if
like の先頭が で始まるかどうかを確認する最初のステートメントD
は、他の 2 つのステートメントを実行するために常に true である必要がありますが、 ifif
の外にある必要がある次の行も読み取る必要があります。D
声明。どうすればこれを行うことができますか?