仅用于一个输入的Ruby多行输入

时间:2015-02-10 22:10:33

标签: ruby input

我有一个小程序,我正在努力,我希望用户能够输入潜在的多行响应。

我用

找到了这个例子
$/ = "END"
user_input = STDIN.gets
puts user_input

但这使得所有输入都需要END关键字,我只需要输入一个。

如何只为一个输入生成多行输入?

3 个答案:

答案 0 :(得分:8)

IO#gets有一个可选参数,允许您指定分隔符。这是一个例子:

puts "Enter Response"
response = gets.chomp

puts "Enter a multi line response ending with a tab"
response = gets("\t\n").chomp

输出:

Enter Response
hello
Enter a multi line response ending with a tab
ok
how
is
this

答案 1 :(得分:1)

此方法接受文本,直到第一个空行:

def multi_gets(all_text='')
  until (text = gets) == "\n"
    all_text << text
  end
  return all_text.chomp # you can remove the chomp if you'd like
end

puts 'Enter your text:'
p multi_gets

输出:

Enter your text:
abc
def

"abc\ndef"

答案 2 :(得分:0)

我用这个:

in = STDIN.readline(sep="\t\n")
puts in

结束输入。有关更多信息,请参见https://ruby-doc.org/core-2.2.0/IO.html#method-i-readline