从标准输入读取和打印到红宝石标准输出
问题描述:
这个问题有点简单(不要对我如此苛刻),但我不能得到一个代码漂亮的解决方案。我有以下代码:从标准输入读取和打印到红宝石标准输出
ARGF.each_line do |line|
arguments = line.split(',')
arguments.each do |task|
puts "#{task} result"
end
end
它只是从标准输入数字中读取。我使用这种方式:
echo "1,2,3" | ruby prog.rb
所需的输出是
1 result
2 result
3 result
但实际产量
1 result
2 result
3
result
好像有介绍一个换行符。我正在跳过什么?
答
每个line
都以换行符结尾,所以在您的示例中以逗号分隔意味着最后一个标记为3\n
。打印后打印3
,然后换行。
使用
arguments = line.chomp.split(',')
要分裂之前删除尾随换行符尝试。
答
你的stdin输入包含一个尾随的换行符。尝试调用line.chomp!
作为each_line
块中的第一条指令。
'puts task.inspect'会显示'task'中有一个换行符。 – 2011-06-14 13:08:44