【发布时间】:2010-10-10 18:07:17
【问题描述】:
来自第一次使用 Ruby 程序员的非常简单的问题。
如何在 Ruby 中遍历一段文本?每次遇到换行符,我都想重新启动内循环。
def parse(input)
...
end
【问题讨论】:
标签: ruby string while-loop loops
来自第一次使用 Ruby 程序员的非常简单的问题。
如何在 Ruby 中遍历一段文本?每次遇到换行符,我都想重新启动内循环。
def parse(input)
...
end
【问题讨论】:
标签: ruby string while-loop loops
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
我认为这应该处理换行符。
【讨论】:
str.each_line.map(&:chomp).each do |line|... 这样的东西可以做到这一点,但你也可以在each_line 迭代中一次性完成。