2013-10-06 93 views
2

如果我將字符串"this is a \#test"放到Python shell中,我會返回'this is a \\#test',這是我正在尋找的行爲。但是如果我把它放到一個Ruby shell中,我會返回"this is a #test",但沒有表明反斜槓已經存在。如何讓Ruby字符串的行爲像Python一樣,也就是說,不會自動轉義我的#號?阻止Ruby自動轉義字符串

回答

2

當您不想要轉義序列解釋時使用單引號。

[1] pry(main)> 'this is a \#test' 
=> "this is a \\#test" 

單引號也不會做串插,所以如果你需要,你可以逃脫手動您的斜線:

[1] pry(main)> t = "test" ; "this is a \\##{t}" 
=> "this is a \\#test" 
+0

單引號是'gets'方法的默認行爲嗎? – Kvass

+0

'gets'方法不會執行任何插值或轉義序列。它與引用沒有任何關係 - 它只是從標準輸入中讀取字符。 –

+0

@Kvass:獲取永遠不會轉義字符。 – Linuxios

2

只需使用單引號代替雙引號:

'this is a \#test' 

將包含反斜槓。在Ruby中,只有"字符串會進行替換和轉義。 '只能轉義字符串\\\