ruby の標準入力と出力
久々に paiza で ruby の問題を解いたのだが、結構忘れていたので振り返られるようにメモ。
ruby
1行に1要素だけ存在する場合
# 標準入力 Tokyo
line = gets p line
# 出力結果 "Tokyo"
1行に複数要素が存在する場合
# 標準入力 Tokyo Nagoya Osaka
line = gets.split(" ") p line
# 出力結果 ["Tokyo", "Nagoya", "Osaka"]
gets は一行読み込んで、読み込みに成功した時にはその文字列を返す。
split は指定されたセレクタで分割し、配列で返す。
複数行に一つずつ要素が存在する場合
# 標準入力 Tokyo Nagoya Osaka
line = readlines.map(&:chomp)
p line
# 出力結果 ["Tokyo", "Nagoya", "Osaka"]
readlines はすべての行を読み取り、1行ごと配列に格納する。
また、map を使って配列のすべての要素に chomp で改行なしにしている。
複数行に複数要素が存在する場合
# 標準入力 Tokyo Nagoya Osaka Japan Korea China
lines = [] while line = gets lines << line.chomp.split(' ') end p lines
# 出力結果 [["Tokyo", "Nagoya", "Osaka"], ["Japan", "Korea", "China"]]
while line = gets ですべての行を取得するまで繰り返し…している。
参考記事
Ruby 標準入力から値を受け取る方法 - Qiita
IO#gets (Ruby 2.7.0 リファレンスマニュアル)
IO.readlines (Ruby 2.7.0 リファレンスマニュアル)