2012-01-17 14 views
2

私のアプリの場合は、1つの空白があれば問題ありません。しかし、2-4がある場合は、間隔を維持するためにそれらを& nbspに置き換えたいと思います。Rails、2+の空白をすべて&nbspに置き換えるにはどうすればよいですか?

rails/regexでこれを行うにはどうすればよいですか?または、他の何か?

所望の出力:

' ' = ' ' 
' ' = '  ' 
' ' = '   ' 
' ' = '    ' 
+0

は、単一スペースを&nbsp - noに置き換えても問題ありません。 – klochner

+0

@klochner - ' 'は改行を許可していません! –

+0

@JosephSilber - ありがとう、ありがとう。 – klochner

答えて

5

は、なぜあなたはそれらの両方を変換が必要なのですか?実際の空間として1つを残してみませんか?

次に、あなただけの先読みを使用することができます。

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

は、ここでのアクションでそれを参照してください:http://regexr.com?2vodu

+0

予想される出力は得られません。 '' '.gsub(/(?=)/、'   ')=>'   ' – Sayuj

+0

2つの空白が来たら、両方のスペースを'   'に置き換えてください。しかし、コードはそれをしません。あなたは? – Sayuj

6

をあなただけの2つの以上のスペースが一致するパターンを必要とし、その後、gsubのブロックフォームを使用し、例えば

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

:マッチがあるどのくらい見

>> ' '.gsub(/ {2,}/) { ' ' * $&.length } 
=> " " 
>> (' ' * 2).gsub(/ {2,}/) { ' ' * $&.length } 
=> "  " 
>> (' ' * 3).gsub(/ {2,}/) { ' ' * $&.length } 
=> "   " 
>> (' ' * 11).gsub(/ {2,}/) { ' ' * $&.length } 
=> "           " 
関連する問題