Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 稍微好一点的删除新行的方法_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 稍微好一点的删除新行的方法

Ruby on rails 稍微好一点的删除新行的方法,ruby-on-rails,ruby,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 all\n并将其全部删除。我怎样才能做到以下几点: 如果我看到

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

"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 all
\n
并将其全部删除。我怎样才能做到以下几点:

  • 如果我看到有两个以上的
    \n
    ,请在文本中只留下两行换行符

您可以使用以下正则表达式(假设
s
包含您的字符串):

如果要允许换行符之间存在任意数量的交错空格字符,并将其删除,最好使用:

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

如果要删除除前两行以外的所有新行,可以使用传递给
gsub
的块:

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

您的意思是,只允许两个后续换行符之间没有任何内容?所以
\n\n\n\n
可以,但是
\n\n\n
将更改为
\n\n\n
?还是所有新的生产线都被删除,只留下两条?如果是这样的话,哪两个?请给我们一个您期望的输出示例,将测试消息作为输入。领导新的生产线怎么样?课文中间的新行怎么办?新行是否总是尾随?
hits = 0
text.gsub(/\n/) { (hits = hits + 1) > 2 ? '' : "\n" }
# => "This is a test message     : \n \n                                                                                                         "