Ruby on rails 导轨,如何更换所有2+;带&;什么?

Ruby on rails 导轨,如何更换所有2+;带&;什么?,ruby-on-rails,ruby,regex,ruby-on-rails-3,Ruby On Rails,Ruby,Regex,Ruby On Rails 3,对于我的应用程序,如果有一个空白就可以了。但是,如果有2-4个,我想将其替换为以保留间距 使用rails/regex实现这一点的最佳方法是什么?还是别的什么 所需输出: ' ' = ' ' ' ' = '  ' ' ' = '   ' ' ' = '    ' 为什么你需要两个都转换?为什么不留下一个实际的空间呢 然后,您

对于我的应用程序,如果有一个空白就可以了。但是,如果有2-4个,我想将其替换为以保留间距

使用rails/regex实现这一点的最佳方法是什么?还是别的什么

所需输出:

' ' = ' '
'  ' = '  '
'   ' = '   '
'    ' = '    '

为什么你需要两个都转换?为什么不留下一个实际的空间呢

然后,您可以使用前瞻:

srt.gsub(/ (?= )/, ' ')

请参见此处的操作:

您只需要一个匹配2个或更多空格的模式,然后使用
gsub的块形式查看匹配的长度:

s.gsub(/ {2,}/) { ' ' * $&.length }
例如:

>> ' '.gsub(/ {2,}/) { ' ' * $&.length }
=> " "
>> (' ' * 2).gsub(/ {2,}/) { ' ' * $&.length }
=> "  "
>> (' ' * 3).gsub(/ {2,}/) { ' ' * $&.length }
=> "   "
>> (' ' * 11).gsub(/ {2,}/) { ' ' * $&.length }
=> "           "

如果将单个空格替换为-no就可以了?@klochner-
不允许换行@JosephSilber-很高兴知道,谢谢。它不会给出预期的输出。gsub(/(?=)/,'')=>''参见问题,如果出现两个空格,则两个空格都应替换为
。但你的代码不会这么做。你有吗?