2012-04-20 91 views
0

如何将字符串'\x'附加到Ruby中的数字中?我尝试过'\\x',但它不起作用。在Ruby中转义特殊字符

+0

请提供样本输入和输出。 – taro 2012-04-20 09:33:10

回答

1

大概是这样的:

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

这可能是OP想要的,尽管他说“追加”,而不是“前置”。 – 2012-04-20 09:38:29

0

没有上下文,很难知道你想要达到的目的。这里有一些方法(如果你真的要追加):

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

如果你想输出十六进制数字,这是件好事:

"\\x%s" % num.to_s(16) 
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中,单引号字符串文字比双引号文字经历的替换少得多。