[Ruby]readlines のナゾ

IOクラスのメソッドである readlines は、その名の通りストリームを改行文字で区切って読み出し、配列に格納してくれますが、期待した動作と少し違っていたので戸惑ってしまいました。
例えば test.txt が

banana
apple
orange

となっているとします。

fruits = IO.readlines( 'test.txt' )

if fruits.include? 'banana' then
  p 'The monkeys will be delighted.'
else
  p 'Sorry, monkeys.'
end

darwin_ape.jpg配列 fruits に文字列 banana が含まれていると The monkeys will be delighted. とプリントされるはずですが、結果は Sorry, monkeys. となります。

なぜかというと、fruit[0] は’banana’ではなく’banana\n‘だからです。

改行文字を取り除いて配列に格納するには、

fruits = IO.read( "test.txt" ).split("\n")

などとしなければなりません。

ちなみに、Python の readlines() も同じように改行文字を含めるようです。

コメントを残す

メールアドレスが公開されることはありません。

*