Tutorial :How do you loop through a multiline string in Ruby?



Question:

Pretty simple question from a first-time Ruby programmer.

How do you loop through a slab of text in Ruby? Everytime a newline is met, I want to re-start the inner-loop.

def parse(input)      ...  end  


Solution:1

String#each_line

str.each_line do |line|      #do something with line  end  


Solution:2

What Iraimbilanja said.

Or you could split the string at new lines:

str.split(/\r?\n|\r/).each { |line| … }  

Beware that each_line keeps the line feed chars, while split eats them.

Note the regex I used here will take care of all three line ending formats. String#each_line separates lines by the optional argument sep_string, which defaults to $/, which itself defaults to "\n" simply.

Lastly, if you want to do more complex string parsing, check out the built-in StringScanner class.


Solution:3

You can also do with with any pattern:

str.scan(/\w+/) do |w|    #do something  end  


Solution:4

str.each_line.chomp do |line|    # do something with a clean line without line feed characters  end  

I think this should take care of the newlines.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »