Reputation: 924
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
Upvotes: 14
Views: 8157
Reputation: 8065
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.
Upvotes: 9
Reputation: 29493
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"]
Upvotes: 9
Reputation: 42182
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
Upvotes: 10
Reputation: 111
str = <<-EOF
Your multi line
text goes here
.....
EOF
But the catch is you'll have to end with EOF
Upvotes: -4