#!/usr/bin/env ruby # coding: utf-8 #Encoding.default_external = 'utf-8' # 入出力コードをutf-8に require 'csv' # CSVライブラリ csvfile = "syllabus.csv" # シラバス定義CSVファイル csv = CSV.read(csvfile, headers: true) db = csv # いったん別の変数にコピー STDERR.print("開講時期は(指定なしの場合は空で)?: ") term = gets.chomp STDERR.print("担当教員は(指定なしの場合は空で)?: ") whom = gets.chomp # selectメソッドで絞り込み: # selectは1つずつ要素を取り出し、ブロック内の式が真(nilでもfalseでもない) # を返す要素(CSVの1行に相当)のみで構成される集合を返す。 if term > "" # 開講時期指定に何か文字列を入れたなら ptn = Regexp.new(term) # 文字列を正規表現に変換 db = db.select {|row| ptn =~ row["開講時期"]} # 選択して再代入 end if whom > "" # 担当教員指定に何か文字列を入れたなら ptn = Regexp.new(whom) # 文字列を正規表現に変換 db = db.select {|row| ptn =~ row["担当教員"]} end puts("【該当科目一覧】") db.each {|row| # eachメソッドで1行ずつrowに取り出す printf("%s %sの情報 %s\n", "="*20, row["科目名"], "="*20) row.each {|key, value| printf("%s: %s\n", key, value) } }