在 Ruby 中从 stdin 读取并打印到 stdout
这个问题有点简单(不要对我那么严厉),但我无法得到代码漂亮的解决方案。我有以下代码:
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
似乎引入了换行符。我正在跳过一些东西吗?
This question is kinda simple (don't be so harsh with me), but I can't get a code-beautiful solution. I have the following code:
ARGF.each_line do |line|
arguments = line.split(',')
arguments.each do |task|
puts "#{task} result"
end
end
It simply read from the standard input numbers. I use it this way:
echo "1,2,3" | ruby prog.rb
The output desired is
1 result
2 result
3 result
But the actual output is
1 result
2 result
3
result
It seems like there's a newline character introduced. I'm skipping something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
每个
line
以换行符结尾,因此在示例中以逗号分隔意味着最后一个标记是3\n
。打印此内容会打印3
,然后打印换行符。尝试使用
在分割之前删除尾随换行符。
Each
line
ends in a newline character, so splitting on commas in your example means that the last token is3\n
. Printing this prints3
and then a newline.Try using
To remove the trailing newlines before splitting.
您的标准输入输入包含尾随换行符。尝试调用
line.chomp!
作为each_line
块中的第一条指令。Your stdin input includes a trailing newline character. Try calling
line.chomp!
as the first instruction in youreach_line
block.