我试图模仿匹配以下内容并替换" c"对于左括号和右括号。
实施例: string ="(a,b)"
所以我希望字符串出现像" ca,cb"我打电话给string.sub(//,"c")
之后。我已经尝试了string.sub(/[()]/,"c")
,但这只会导致" ca,b)"。如何模式匹配左右括号?
答案 0 :(得分:3)
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
(“global sub”)尽可能多地替换它。
答案 1 :(得分:3)
对于单个字符替换,尝试tr:
'(a,b)'.tr '()', 'c'
答案 2 :(得分:0)
如果你的预期输出真的是"ca,cb"
而不是"ca,bc"
,这是迄今为止给出的其他答案的结果,那么以下应该可以做到这一点:
1.9.3-p194 :001 > "(a,b)".tr('(', 'c').gsub(/(.)\)/, 'c\1')
=> "ca,cb"
您尚未指定如何处理空括号或多个级别,因此不会考虑这些情况。