ファイルを読み込むループを作る。
open("ra-order.csv", "r") do |raa| while line = raa.gets print line end end
上記のプログラムの print line
の部分を、項目ごとに分解して printf
するように変える。print line
の行を以下のいずれかにする。
if /(.*),(,*),(.*)/ =~ line then printf("%sさんが%sを注文しました。\n", $1, $2) end
または
id, item = line.split(/,\s*/) # カンマで分割する printf("%sさんが%sを注文しました。\n", id, item)
ヒントを参考に、 CSVをハッシュにするメソッドを利用し、上記の id と item の出力部分をハッシュ参照に変える。
def csv2hash(file, default = nil) ra_hash = Hash.new(default) # 空のハッシュを作る open(file, "r") do |f| while line = f.gets csv = line.chomp.split(/,\s*/) # カンマで分割 ra_hash[csv.shift] = csv end end ra_hash end menu = csv2hash("ra-menu.csv") sum = 0 # 合計売り上げ open("ra-order.csv", "r") do |raa| while line = raa.gets id, item = line.split(/,\s*/) # カンマで分割する printf("%sさんが%sを注文しました。\n", id, menu[item][0]) s += menu[item][1] end end printf("%s\n今日の売り上げは%d円でした。\n", "-"*66, sum)
同様に ra-member.csv をハッシュ化し、メンバID から名前に変換する部分を作ればよい。