Ruby2.6.3如何接收用户输入的多个段落?
解决Ruby中gets无法读取多段输入的问题
哈哈,这个坑我之前踩过!Ruby里的gets方法默认只会读取一行输入,遇到第一个换行符就停止读取了,所以你输入的第二段内容其实还留在输入缓冲区里,没被gets捞出来~
要实现读取多段内容的需求,有两种常用方法:
方法一:使用
$stdin.read读取全部输入
这个方法会一次性读取所有输入内容,直到用户输入结束符(Unix/Linux/macOS按Ctrl+D,Windows按Ctrl+Z)。修改后的代码如下:print("Paste your text here: ") essay = $stdin.read puts essay当你粘贴完多段内容后,按下对应的结束键,就能得到包含所有换行的完整文本啦,输出就是你期望的
"I like cake.\nIt makes me happy.\n"格式。方法二:循环读取每行直到触发停止条件
如果希望用户手动输入时,能通过输入空行来结束输入(适合非粘贴场景),可以用循环读取每一行:print("Paste your text here (enter empty line to finish): ") essay = [] while line = gets break if line.chomp.empty? # 遇到空行就停止读取 essay << line end puts essay.join这样用户输入完所有段落,敲一个空行就能结束,最终输出也是完整的多段文本。
内容的提问来源于stack exchange,提问作者I_love_coffee
相关产品推荐
相关产品推荐

