你如何在Ruby中循环多线字符串?

时间:2009-03-02 10:31:26

标签: ruby string while-loop loops

来自第一次Ruby程序员的非常简单的问题。

如何在Ruby中循环一段文本?每次遇到换行符时,我都想重新启动内循环。

def parse(input)
    ...
end

4 个答案:

答案 0 :(得分:104)

String#each_line

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

答案 1 :(得分:19)

Iraimbilanja说的话。

或者您可以将字符串拆分为新行:

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

请注意,each_line会保留换行符,而split会占用换行符。

注意我在这里使用的正则表达式将处理所有三行结束格式。 String#each_line按可选参数sep_string分隔行,默认为$/,其本身默认为"\n"

最后,如果您想进行更复杂的字符串解析,请查看内置的StringScanner类。

答案 2 :(得分:3)

您也可以使用任何模式:

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

答案 3 :(得分:-2)

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

我认为这应该照顾换行。