【问题标题】:How do you loop through a multiline string in Ruby?如何在 Ruby 中遍历多行字符串?
【发布时间】:2010-10-10 18:07:17
【问题描述】:

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

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

def parse(input)
    ...
end

【问题讨论】:

    标签: ruby string while-loop loops


    【解决方案1】:

    String#each_line

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

    【讨论】:

      【解决方案2】:

      Iraimbilanja 所说的。

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

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

      注意each_line 保留换行符,而split 吃掉它们。

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

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

      【讨论】:

        【解决方案3】:

        您也可以使用任何模式:

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

        【讨论】:

          【解决方案4】:
          str.each_line.chomp do |line|
            # do something with a clean line without line feed characters
          end
          

          我认为这应该处理换行符。

          【讨论】:

          • 那行不通。没有块的 String#each_line 返回一个 Enumerator,它不响应 chomp。 Beyond chomp 不需要阻塞。
          • str.each_line.map(&:chomp).each do |line|... 这样的东西可以做到这一点,但你也可以在each_line 迭代中一次性完成。
          猜你喜欢
          • 2013-01-05
          • 1970-01-01
          • 2010-12-02
          • 2015-03-26
          • 2010-09-18
          • 2011-05-13
          • 2011-03-04
          • 1970-01-01
          相关资源
          最近更新 更多