57

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

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

def parse(input)
    ...
end
4

4 回答 4

120

字符串#each_line

str.each_line do |line|
    #do something with line
end
于 2009-03-02T10:34:46.593 回答
19

Iraimbilanja 所说的。

或者您可以在新行处拆分字符串:

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

请注意,在吃掉它们each_line的同时保留换行符。split

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

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

于 2009-03-02T10:51:01.967 回答
4

您也可以使用任何模式:

str.scan(/\w+/) do |w|
  #do something
end
于 2009-03-02T15:18:56.753 回答
-2
str.each_line.chomp do |line|
  # do something with a clean line without line feed characters
end

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

于 2009-03-02T20:48:20.317 回答