删除新行的方法稍微好一些

时间:2014-06-18 18:59:08

标签: ruby-on-rails ruby

我有一个包含多个换行符的文本/字符串。如下例所示:

"This is a test message     : \n \n\n  \n    \n    \n    \n    \n  \n   \n    \n      \n         \n      \n      \n        \n          \n          \n            \n   

        "

我可以用空格gsub所有\n并将它们全部删除。我该怎么做:

  • 如果我发现有两个以上的\n,请在文字中只留下两个换行符?

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式替换三个或更多新行中的任何序列,两者之间没有任何内容(假设s 包含你的字符串):

s.gsub /\n\n+/, "\n\n"

如果您想在换行符之间允许任意数量的交错空格字符并删除它,请更好地使用:

s.gsub /\n *(\n *)+/, "\n\n"

答案 1 :(得分:1)

如果您要删除除前两个换行符之外的所有换行符,可以使用传递给gsub的块:

hits = 0
text.gsub(/\n/) { (hits = hits + 1) > 2 ? '' : "\n" }
# => "This is a test message     : \n \n                                                                                                         "