2011-06-27 65 views
4

我在Ruby中工作,我試圖將'字符轉義爲\',以便我可以在SQL中使用它們。我正在嘗試使用gsub,但它似乎沒有工作。使用Gsub轉義撇號

"this doesn't work".gsub /'/, '\\'' #=> "this doesnt workt work" 
"this doesn't work".gsub /'/, '\\\'' #=> "this doesnt workt work" 
"this doesn't work".gsub /'/, '\\\\'' #=> "this doesn\\'t work" 
"this doesn't work".gsub /'/, '\\\\\'' #=> "this doesn\\'t work" 

我不知道是否gsub甚至要使用正確的方法,所以我願意嘗試幾乎任何東西,獲得我正在尋找的結果。

+2

四個不要停止。去五。其實,四應返回錯誤,另外請注意,爲了讓ruby在雙引號內顯示​​(檢查)結果,它將會跳出一個反斜槓,你可能沒有注意到你已經得到了它。 – sawa

+0

@sawa謝謝。你說得對,我沒有我甚至沒有注意到它是正確的。 –

回答

3

由於Ruby的正則表達式中的特殊含義/解釋,其他人有這個問題。

\'意思是$'這就是 之後的一切。再次逃脫\它 作品

請參閱this answer

這是行不通的?

"this doesn't work".gsub /'/, '\\\\\'' => "this doesn\\'t work" 
+1

這個解決方案的問題在於它將''''轉換爲'\\'''''我正在尋找一個'\''。 –

+0

哦,我明白了。一秒... – jefflunt

+1

'gsub /'/,'\\\\\'' ' – sawa

0

你必須逃避\和'。 當您需要'的結果,爲什麼不「定義結果

puts "this doesn't work".gsub /'/, "\\\\'" #=> "this doesn\'t work" 

\無論如何必須逃脫。