Ruby 如何使用gsub将字符串中的所有数字转换为十六进制?

Ruby 如何使用gsub将字符串中的所有数字转换为十六进制?,ruby,hex,gsub,Ruby,Hex,Gsub,我正在尝试将字符串中的所有数字转换为十六进制。 我尝试了以下代码: str.gsub(/(\d+)/, '\1'.to_i.to_s(16)) 但这会将每个数字替换为0,因为它会修改字符串'\1',而不是替换\1的数字 如何使用gsub正确执行此操作?接受块。块的返回值用作替换值: >> str = '100 200' => "100 200" >> str.gsub(/\d+/) { |x| x.to_i.to_s(16) } => "64 c8" 如果

我正在尝试将字符串中的所有数字转换为十六进制。 我尝试了以下代码:

str.gsub(/(\d+)/, '\1'.to_i.to_s(16))
但这会将每个数字替换为
0
,因为它会修改字符串
'\1'
,而不是替换
\1
的数字

如何使用
gsub
正确执行此操作?

接受块。块的返回值用作替换值:

>> str = '100 200'
=> "100 200"
>> str.gsub(/\d+/) { |x| x.to_i.to_s(16) }
=> "64 c8"

如果这些类型发生了变化,就没有必要感谢我们。这是StackOverflow客房管理的一部分。