📝
Ruby 標準入力で複数行を読み込む readlinesメソッド
今日は標準入力で複数行を読み込みたい場合の書き方についてです。
入力行が何行になるかわからない!そんなときは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]
参考
readlinesメソッドはファイルの読み込みの時に使うのが王道なのかな?
Discussion