如何在Ruby字符串的开头和结尾删除换行符

28

我需要在Ruby中删除字符串开头和结尾的换行符(一种修剪操作)。

但仅限于在开头和结尾处...字符串中间的换行符必须保留不变。

谢谢!

5个回答

44

你可以使用String#strip方法。

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

10
如果你最终使用 strip! 来“就地”修改变量,那么要注意,因为当它不需要从字符串的开头或结尾进行削除时,它会返回 nil - Joshua Pinter

2

1

这应该可以解决问题:

string.lstrip!.rstrip!

2
我认为lstrip + rstrip == strip,但首先应该确认一下。 - Felix
@Felix 可以确认 "\n\r\sfoo\s\r\n".lstrip.rstrip.eql? "\n\r\sfoo\s\r\n".strip 返回 true - J.M. Janzen
@ennuikiller:你能更新一下答案并附上文档链接吗? - Felix

1
如果您的意图是仅删除空格,则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。这可能不是跨平台的。


1

NPatel的回答 的平台无关版本是:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接