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

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

def parse(input)
    ...
end
有帮助吗?

解决方案

String#each_line

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

其他提示

Iraimbilanja说的话。

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

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

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

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

最后,如果您想进行更复杂的字符串解析,请查看内置的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

我认为这应该照顾换行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top