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

AnA*_*ice 2 ruby regex ruby-on-rails ruby-on-rails-3

对于我的应用程序,如果有一个白色空间是好的.但如果有2-4我想用它来替换它们以保留间距.

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

期望的输出:

' ' = ' '
'  ' = '  '
'   ' = '   '
'    ' = '    '
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 6

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

s.gsub(/ {2,}/) { ' ' * $&.length }
Run Code Online (Sandbox Code Playgroud)

例如:

>> ' '.gsub(/ {2,}/) { ' ' * $&.length }
=> " "
>> (' ' * 2).gsub(/ {2,}/) { ' ' * $&.length }
=> "  "
>> (' ' * 3).gsub(/ {2,}/) { ' ' * $&.length }
=> "   "
>> (' ' * 11).gsub(/ {2,}/) { ' ' * $&.length }
=> "           "
Run Code Online (Sandbox Code Playgroud)


Jos*_*ber 5

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

然后你可以使用前瞻:

srt.gsub(/ (?= )/, ' ')
Run Code Online (Sandbox Code Playgroud)

请在此处查看:http://regexr.com?2vodu