你如何循环Ruby中的多行string?

第一次Ruby程序员很简单的问题。

你如何通过Ruby中的一块文本循环? 每次换行符合时,我都想重新启动内部循环。

def parse(input) ... end 

串#each_line

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

Iraimbilanja说。

或者你可以将这个string拆分成新的行:

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

请注意, each_line保留换行字符,而split吃它们。

请注意我在这里使用的正则expression式将照顾所有三行结束格式。 String#each_line sep_string用可选参数sep_string分隔行,缺省值为$/ ,它本身默认为"\n"

最后,如果你想做更复杂的stringparsing,请检查内置的StringScanner类。

你也可以使用任何模式:

 str.scan(/\w+/) do |w| #do something end 
 str.each_line.chomp do |line| # do something with a clean line without line feed characters end 

我认为这应该照顾换行符。