红宝石“获取”的作品多行(Ruby 'gets' that works over m

2019-07-05 01:24发布

使用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

Answer 1:

您可以按以下方式做到这一点,

$/ = "END"  
user_input = STDIN.gets
puts user_input

请确保输入END关键字,当你想输入完成后,

除了这只会与实际不解释IRB工作。



Answer 2:

您可以使用此方法,它接受文本直到第一个空行

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


Answer 3:

你可以使用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"]


Answer 4:

str = <<-EOF
Your multi line
text goes here
.....
EOF

但前提条件是你必须与EOF结束



文章来源: Ruby 'gets' that works over multiple lines
标签: ruby gets