2012-01-19 99 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