2012-01-19 61 views
1

我想用“反斜杠撇号”(\')替换名称中的撇号(')。但不幸的是没有得到这么简单的东西。如何使用gsub替换撇号

于是就IRB我尝试以下

X = “堆栈的” x.gsub(/ [\ '] /,“\'”)

一些人来说是多么不工作我得到相同result-栈的代替堆\的

回答

2

尝试了这一点:

x.gsub(/[']/,"\\\\\'") 

结果:

1.9.3p0 :014 > puts x.gsub(/[']/,"\\\\\'") 
anupam\'s 
+0

1.8.7-P357:008> x.gsub(/ [ '] /, “\\\\'”) => “阿努邦\\的” 我正在此:( –

+0

这是正常的 - 检查产生转义输出。如果你打电话放在输出,那么你不会看到额外的反斜杠 –

+0

谢谢它工作! –

3

试试这个:

x = "anupam's"; puts x.gsub("'", "\\\\'") 
+0

我得到的输出为“阿努邦\\的” :( –

+0

其实我是想把这个字符串放在java脚本中(以形成一个url)...所以这个anupam的字符串工作 –

+1

正如其他评论中提到的那样,输出(例如,irb)也会被转义。如果你使用puts把它打印出来,屏幕上就不会出现两个反斜杠,然后你就可以在java中使用它了。 –

1

下面是脉动热管和addslashes方法红宝石变体(来自http://www.ruby-forum.com/topic/113067#263640)。这种方法也逃脱\在字符串中,双\

class String 
    def addslashes 
    self.gsub(/['"\\\x0]/,'\\\\\0') 
    end 
end 

这将正确逃生阿努邦的:

"anupam's".addslashes # => "anupam\\'s" 
+0

其实我想把这个字符串中的Java脚本(形成URL)......等会本阿努邦\\的字符串工作 –

+0

有一个在轨的一个帮手...'escape_javascript'或者只使用''anupam's“.to_json' :) – lwe