2017-12-05 24 views
-4

空白とスラッシュをアンダースコアに置き換え、バックスラッシュを残したいと思います。'gsub'の正規表現でバックスラッシュを保持する

どうすればよいですか?

私は、次の正規表現があります

"hello\h /123".gsub(/[\s+\/]/, "_") 
#=> "helloh__123" 

をしかし、それはまた、文字列内のバックスラッシュを置き換えます。

+4

バックスラッシュ内部二重引用符で囲まれた文字列リテラルは2倍にする必要があります。または、引用符で囲まれた単一の文字列リテラルを使用します。 https://ideone.com/NqLSk3を参照してください。 –

+3

文字列にバックスラッシュはありません。 –

+0

変数に入れると、 'hello \ c /123'.gsub(/\s+|\//、 "_") => "hello \\ c__123"というようになります。しかしputsは正しい出力を与えます。どのように変数でそれを取得するには? – explorer

答えて

0

ので、あなただけのスペースを変換したいとアンダースコアとスラッシュ場合は、好むかもしれない:

"hello\h /123".tr('/ ','__') # 2nd arg is two underscores 
#=> "helloh__123" 

(しかし、私は今のところ問題についてのコメントに同意する。)

関連する問題