这个问题有点简单(不要对我如此苛刻),但我无法获得代码美观的解决方案。我有以下代码:
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
似乎引入了换行符。我正在跳过什么东西?
答案 0 :(得分:4)
每个line
以换行符结尾,因此在示例中使用逗号分割意味着最后一个标记为3\n
。打印此内容会打印3
,然后打印换行符。
尝试使用
arguments = line.chomp.split(',')
在拆分前删除尾随换行符。
答案 1 :(得分:1)
您的stdin输入包含一个尾随换行符。尝试拨打line.chomp!
作为each_line
区块中的第一条指令。