Чтение со стандартного ввода и печать на стандартный вывод в Ruby - PullRequest
1 голос
/ 14 июня 2011

Этот вопрос довольно прост (не будь таким резким со мной), но я не могу найти красивое решение кода.У меня есть следующий код:

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

Кажется, что введен символ новой строки,Я что-то пропускаю?

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

Каждый line оканчивается символом новой строки, поэтому разделение на запятые в вашем примере означает, что последний токен равен 3\n.При печати этой страницы печатается 3, а затем новая строка.

Попробуйте использовать

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

Для удаления завершающих строк новой строки перед разбиением.

1 голос
/ 14 июня 2011

Ваш ввод stdin включает в себя завершающий символ новой строки. Попробуйте вызвать line.chomp! в качестве первой инструкции в вашем блоке each_line.

...