对于我的应用程序,如果有一个空格很好。但如果有2-4,我想用& nbsp替换它们以保留间距。
使用rails / regex执行此操作的最佳方法是什么?或其他什么?
期望输出:
' ' = ' '
' ' = ' '
' ' = ' '
' ' = ' '
答案 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}}