使用IRB,我想,以从中剥离某些字符输入一个多行字符串。 “获取”只允许一个单一的线 - 是有多个行类似的功能。
ASCII_project.rb(main):002:0* puts = "What's the text you want to strip?"
=> "What's the text you want to strip?"
ASCII_project.rb(main):003:0> str = gets
我现在想在一段文字粘贴 - 因为新线是不起作用的。 这就是为什么我想收集多行
下面是代码
# encoding: CP850
puts = "What's the text you want to strip?"
str = gets
str.gsub!(/\P{ASCII}/, '')
puts str
您可以按以下方式做到这一点,
$/ = "END"
user_input = STDIN.gets
puts user_input
请确保输入END关键字,当你想输入完成后,
除了这只会与实际不解释IRB工作。
您可以使用此方法,它接受文本直到第一个空行
def multi_gets all_text=""
while (text = gets) != "\n"
all_text << text
end
all_text
end
这还是一个,你可以用你定义的任何结束字符替换成\ n \ n
def multi_gets all_text=""
while all_text << STDIN.gets
return all_text if all_text["\n\n"]
end
end
你可以使用readlines()
在$stdin
像这样
> $stdin.readlines
Mit Wohnungen, mit Bergen, Hügeln, Flüssen,
Solang ichs deutlich sah, ein Schatz der Freuden;
Zuletzt im Blauen blieb ein Augenweiden
An fernentwichnen lichten Finsternissen.
# ^D
=> ["Mit Wohnungen, mit Bergen, Hügeln, Flüssen,\n",
"Solang ichs deutlich sah, ein Schatz der Freuden;\n",
"Zuletzt im Blauen blieb ein Augenweiden\n",
"An fernentwichnen lichten Finsternissen.\n"]
str = <<-EOF
Your multi line
text goes here
.....
EOF
但前提条件是你必须与EOF结束