在 Ruby 中从 stdin 读取并打印到 stdout

发布于 2024-11-15 14:31:59 字数 445 浏览 3 评论 0原文

这个问题有点简单(不要对我那么严厉),但我无法得到代码漂亮的解决方案。我有以下代码:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谁把谁当真 2024-11-22 14:31:59

每个 line 以换行符结尾,因此在示例中以逗号分隔意味着最后一个标记是 3\n。打印此内容会打印 3 ,然后打印换行符。

尝试使用

arguments = line.chomp.split(',')

在分割之前删除尾随换行符。

Each line ends in a newline character, so splitting on commas in your example means that the last token is 3\n. Printing this prints 3 and then a newline.

Try using

arguments = line.chomp.split(',')

To remove the trailing newlines before splitting.

忘你却要生生世世 2024-11-22 14:31:59

您的标准输入输入包含尾随换行符。尝试调用 line.chomp! 作为 each_line 块中的第一条指令。

Your stdin input includes a trailing newline character. Try calling line.chomp! as the first instruction in your each_line block.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文