逃避Ruby中的特殊字符

时间:2012-04-20 09:27:29

标签: ruby escaping

如何将字符串'\x'附加到Ruby中的数字?我试过'\\x',但它没有用。

3 个答案:

答案 0 :(得分:1)

可能类似于:

my_string = 'foo 123 456 bar'
my_string.gsub(/(\d+)/, '\\x\1') # "foo \\x123 \\x456 bar"

答案 1 :(得分:0)

如果没有上下文,很难知道你想要实现的目标。以下是一些方法(如果你真的想要追加):

"%d\\x" % num
"#{num}\\x" 

如果您尝试输出十六进制数字,这很好:

"\\x%s" % num.to_s(16)

答案 2 :(得分:0)

如果您为'\x'使用单引号字符串,那么您可能已经拥有了所需的字符串。当Ruby(或者更准确,IRB)打印带有文字反斜杠的字符串时,默认情况下会显示它被转义,这就是#p行为的方式(这就是IRB用来显示结果的方式)。但是字符串可能只有一个黑色长度。

num = 123
s = '%d\x' % num  #=> "123\\x" (using the short-hand form for sprintf)

print s #=> 123\x
p s #=> "123\\x"
puts '%d\x' % num #=> 123\x - what the string actually contains

puts num.to_s + '\x'

请注意,在Ruby中,单引号字符串文字的替换次数远少于双引号字符串。