web-dev-qa-db-ja.com

Ruby文字列で正しくgsubを使用する

私はこの表現を持っています:

channelName = rhash["Channel"].gsub("'", " ")

それはうまくいきます。ただし、1文字しか置き換えられません。代わりにもう少し文字を追加したいと思います。だから私は以下を試しました:

channelName = rhash["Channel"].gsub(/[':;] /, " ")

これは機能しませんでした。つまり、文字列に置換が行われず、エラーメッセージもありませんでした。私もこれを試しました:

channelName = rhash["Channel"].gsub!("'", " ")

これにより、文字列が空白になりました。だから絶対に私が望んでいたものではありません。

次の文字を文字列内のスペースに置き換えるgsubメソッドが必要です。

 ' ; :

私の質問:

  1. 上記の文字のすべてのインスタンスがスペースに置き換えられるようにgsubメソッドを構成するにはどうすればよいですか?

  2. Gsubで何が起こっているのですか?上記は空白を返すものとして。

9
banditKing

2回目の試みは非常に近かった。問題は、閉じ角かっこの後にスペースを残したことです。つまり、これらの記号の1つだけを探していましたその後にスペースが続きます

これを試して:

channelName = rhash["Channel"].gsub(/[':;]/, " ")
18
Dylan Markow

これはあなたの質問に答えませんが、それを行うためのより良い方法です。

channelName = rhash["Channel"].tr("':;", " ")
4
sawa