Using the IRB, I want to enter a multiple line string in order to strip certain characters from it. "gets" only allows a single line - is there a similar function for multiple lines.
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
I now want to paste in a section of text - because of the new lines it doesn't function. This is why I want to collect over multiple lines
Here is the code
# encoding: CP850
puts = "What's the text you want to strip?"
str = gets
str.gsub!(/\P{ASCII}/, '')
puts str
You can do this in following way,
$/ = "END"
user_input = STDIN.gets
puts user_input
make sure to type END keyword when you think the input is finished,
As well this will only work with actual interpreter not irb.
You can use this method, it accepts text until the first empty line
def multi_gets all_text=""
while (text = gets) != "\n"
all_text << text
end
all_text
end
or this one, you can replace the \n\n with any end character you define
def multi_gets all_text=""
while all_text << STDIN.gets
return all_text if all_text["\n\n"]
end
end
You could use readlines()
on $stdin
like so
> $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"]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With