2012-04-20 20 views

答えて

1

おそらくのようなもの:コンテキストなし

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

これはおそらくOPが望んでいるものです。 –

0

それはあなたが達成しようとしているかを知るのは難しいです。 (あなたが本当に追加したい場合)ここではいくつかの方法があります。

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

あなたは、出力16進数にしようとしている場合、これは良いです:

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

あなたは、単一引用符で囲まれた文字列を使用している場合'\x'の場合、あなたはすでにあなたが望むものを持っているかもしれません。 Ruby(またはより正確にはIRB)がリテラルのバックスラッシュを含む文字列を出力すると、デフォルトでエスケープされたことが示されます。これは#pがどのように振舞うか(IRBが結果を表示するために使用する方法です)。しかし、文字列は必要に応じて黒スラッシュを1つしか持たないかもしれません。

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のシングルクォート文字列リテラルでは、二重引用符文字列リテラルよりもはるかに少ない置換が行われることに注意してください。

関連する問題