次のパターンマッチングを行い、左括弧と右括弧の両方を「c」に置き換えようとしています。
例:string = "(a、b)"
それで、私はstring.sub(//,"c")
それを呼び出した後、文字列が「ca、cb」のように出てくるようにしたいのです。試しましstring.sub(/[()]/,"c")
たが、結果は「ca、b)」になります。左括弧と右括弧をパターンマッチングするにはどうすればよいですか?
単一文字の置換については、trを試してください。
'(a,b)'.tr '()', 'c'
ruby-1.9.3-p125 :001 > string = "(a,b)"
=> "(a,b)"
ruby-1.9.3-p125 :002 > string.gsub(/[()]/, "c")
=> "ca,bc"
gsub
:sub
は単一の置換を行うことに注意してください。gsub
(「グローバルサブ」)は、可能な限り多くを置き換えます。
これまでに与えられた他の回答の結果である、期待される出力が実際に"ca,cb"
はではない場合"ca,bc"
は、次の方法でうまくいくはずです。
1.9.3-p194 :001 > "(a,b)".tr('(', 'c').gsub(/(.)\)/, 'c\1')
=> "ca,cb"
空の括弧または複数のレベルを処理する方法を指定していないため、これらのケースは考慮されません。