【问题标题】:How to remove newLines at the beginning and at the end of a Ruby string如何在 Ruby 字符串的开头和结尾删除 newLines
【发布时间】:2011-11-02 06:56:56
【问题描述】:

我需要在 ruby​​ 中删除字符串开头和结尾的换行符(某种修剪)。

但只是在开头和结尾...位于字符串中间的新行必须保持不变。

谢谢!

【问题讨论】:

    标签: ruby string replace trim


    【解决方案1】:

    您可以使用String#strip 方法。

    "\tgoodbye\r\n".strip   #=> "goodbye"
    

    【讨论】:

    • 如果您最终使用strip! 来“就地”修改变量,请注意,因为它返回nil,因为它不需要从开头或结尾删除任何内容字符串。
    【解决方案2】:

    NPatel's answer的平台无关版本是:

    "\nabc\ndef\n".gsub(/^#{$/}/, "").gsub(/#{$/}$/, "")
    

    【讨论】:

      【解决方案3】:

      如果您的意图是只去除空格,那么 strip 方法应该可以工作...但是如果您尝试专门针对新行,那么可以试试这个:

      "\r\na b c d\r\ne f g\r\n".gsub(/^\r\n/, "").gsub(/\r\n$/, "")
      => "a b c d\r\ne f g"
      

      gsub 方法将使用正则表达式来定位开始 ^ 和结束 $ 位置以替换为 ""。

      注意:这里我假设你的换行符是 \r\n。这可能与平台无关。

      【讨论】:

        【解决方案4】:

        String.strip 将删除前后所有多余的空格,只留下内脏。

        http://ruby-doc.org/core/classes/String.html#M001189

        【讨论】:

          【解决方案5】:

          应该这样做:

          string.lstrip!.rstrip!
          

          【讨论】:

          • 我也觉得 lstrip + rstrip == strip,不过应该先确认一下。
          • @Felix 可以确认"\n\r\sfoo\s\r\n".lstrip.rstrip.eql? "\n\r\sfoo\s\r\n".strip 返回true
          • @ennukiller:您能否更新答案(并包含文档链接)?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-19
          • 1970-01-01
          • 2013-01-12
          • 2011-12-22
          • 1970-01-01
          相关资源
          最近更新 更多