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

时间:2013-07-15 15:15:13

标签: ruby hex gsub

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

str.gsub(/(\d+)/, '\1'.to_i.to_s(16))

但是这会用0替换每个数字,因为它会修改字符串'\1'而不是替换\1的数字。

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

1 个答案:

答案 0 :(得分:7)

String#gsub接受一个阻止。块的返回值用作替换值:

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