Rubyで標準入力から値を取得するには


はじめに

paizaでスキルチェックをやろうと思ったのですが、
サンプルで提示された標準入力からの取得方法が上手くいかずどん詰まってしまいました。。。
その際に使用した別の方法を載せておきます。
※本当はもっと効率の良いやり方があると思いますが。。。

前提

使用する言語はRubyです

1行に1項目のみ存在する場合の取得方法

標準入力

hoge
get_stdin.rb
fline = readlines
p fline
出力結果

["hoge"]

1行にスペース区切りの項目がn個存在する場合の取得方法

標準入力

hoge fuga foo
get_stdin.rb
fline = readlines
fline = fline[0].split(" ")
p fline 
出力結果

["hoge","fuga","foo"]

改行コードを含む項目がn行にわたりが存在する場合の取得方法

標準入力

hoge
fuga
foo
get_stdin.rb
fline = readlines

p fline 
出力結果

["hoge\n","fuga\n","foo"]

これだけでも取得できますが、上記の通り改行文字が入っているので取り除いちゃいます。

get_stdin.rb
fline = readlines
len = fline.length
i = 0

while i < len
    fline[i] = fline[i].chomp
    i += 1
end

p fline 
出力結果

["hoge","fuga","foo"]

基本的にはこれで何とかなると思います。

ちなみに出力結果をご覧いただくとわかるとおり、標準入力で受け取ったものは文字列なので、
数値項目として扱いたい場合は to_i してください。

標準入力

123
get_stdin.rb
fline = readlines
fline = fline[0].to_i

p fline 
出力結果

123