作为一名首次使用Ruby的程序员,有一个非常简单的问题。
如何在Ruby中循环遍历一段文本?每当遇到换行符时,我希望重新开始内部循环。
def parse(input)
...
end
作为一名首次使用Ruby的程序员,有一个非常简单的问题。
如何在Ruby中循环遍历一段文本?每当遇到换行符时,我希望重新开始内部循环。
def parse(input)
...
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
我认为这应该解决换行问题。
str.each_line.map(&:chomp).each do |line|...
这样的代码可以实现这个功能,但你也可以在each_line
迭代中一次性完成。 - jwadsack