我正试图一次从一个用户接收多个段落。
我尝试使用gets,但是它似乎不起作用...它丢弃了第二段:
#The code:
print("Paste your text here: ")
.. essay = gets
.. puts(essay)
# Getting user imput (the second sentance is a separate paragraph)
Paste your text here: I like cake.
It makes me happy.
# What the computer did for puts(essay):
I like cake.
=> nil
我希望结果是这样的:
"I like cake.\nIt makes me happy.\n"
但是它给了我"I like cake."
。
我怎么能得到预期的结果?
答案 0 :(得分:1)
将段落添加到字符串中,直到输入由空行组成:
str = ""
para = "init"
str << (para = gets) until para.chomp.empty? #or para == "\n"
p str
答案 1 :(得分:0)
这是另一种选择,逻辑略有不同
def getps
save, $/ = $/, "\n\n"
gets.chomp
ensure
$/ = save
end
str = getps
Ruby使用全局变量$/
来确定行尾是什么。 gets
直到行结束为止。如果我们告诉Ruby行尾是两个换行符,那么gets
会一直等到我们连续有两个换行符后才退出。由于我们不需要它们,因此我们将其砍掉。其余代码只是为了确保$/
之后能够正确恢复,因此正常的gets
不会永远混乱。