2013-10-06 55 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中,只有"字符串会进行替换和转义。 '只能转义字符串\\\