Rails,如何用?替换所有2+空格?

时间:2012-01-17 04:47:58

标签: ruby-on-rails ruby regex ruby-on-rails-3

对于我的应用程序,如果有一个空格很好。但如果有2-4,我想用& nbsp替换它们以保留间距。

使用rails / regex执行此操作的最佳方法是什么?或其他什么?

期望输出:

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

2 个答案:

答案 0 :(得分:6)

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

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

例如:

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

答案 1 :(得分:5)

为什么你需要转换它们?为什么不将一个留作实际空间呢?

然后你可以使用前瞻:

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

在此处查看:[{3}}