📝

Ruby 標準入力で複数行を読み込む readlinesメソッド

2023/07/14に公開

今日は標準入力で複数行を読み込みたい場合の書き方についてです。

入力行が何行になるかわからない!そんなときはreadlinesメソッドを使おう

paizaのスキルチェック問題だと「N行の入力があります」と明言してくれるので、N回ループしてgets使ってしまえばOKなんですけど、入力される行が何行になるかわからないケースも当然あるかと思います。
そういう時はreadlinesメソッドを使えばOK
readlinesメソッドは読み込んだ各行の要素を持つ配列を返します。

ruby_drill.rb
puts '文字を入力してください'
input = readlines
p input
ターミナル
文字を入力してください
banana
apple
orange
peach
lemon
["banana\n", "apple\n", "orange\n", "peach\n", "lemon\n"]

このままではターミナルで打った改行も要素に含まれてしまいます。
改行を取り除きたい場合は、readlinesメソッドのオプションにてchomp: trueを指定します。

ruby_drill.rb
puts '文字を入力してください'
input = readlines(chomp: true)
p input
ターミナル
文字を入力してください
banana
apple
orange
peach
lemon
["banana", "apple", "orange", "peach", "lemon"]

入力で受け取る数字を数値として配列に保存したい場合、mapメソッドto_iメソッドを組み合わせます。

ruby_drill.rb
puts '数字を入力してください'
input = readlines.map(&:to_i)
p input
ターミナル
文字を入力してください
1
2
3
4
5
[1, 2, 3, 4, 5]

参考

https://qiita.com/Hayate_0807/items/2e9705091b181a104621



readlinesメソッドはファイルの読み込みの時に使うのが王道なのかな?
https://docs.ruby-lang.org/ja/latest/method/IO/s/readlines.html

Discussion