AnA*_*ice 2 ruby regex ruby-on-rails ruby-on-rails-3
对于我的应用程序,如果有一个白色空间是好的.但如果有2-4我想用它来替换它们以保留间距.
使用rails/regex执行此操作的最佳方法是什么?或者是其他东西?
期望的输出:
' ' = ' '
' ' = ' '
' ' = ' '
' ' = ' '
Run Code Online (Sandbox Code Playgroud)
您只需要一个匹配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)
为什么你需要转换它们?为什么不把一个留作实际空间呢?
然后你可以使用前瞻:
srt.gsub(/ (?= )/, ' ')
Run Code Online (Sandbox Code Playgroud)
请在此处查看:http://regexr.com?2vodu