3

我有一个带有不可打印字符的字符串。

我目前正在做的是用波浪号替换它们:

string.gsub!(/^[:print:]]/, "~")

但是,我实际上想将它们转换为它们的整数值。

我试过这个,但它总是输出0

string.gsub!(/[^[:print:]]/, "#{$1.to_i}")

想法?

4

2 回答 2

7

字符串#gsub字符串#gsub!接受可选块。块的返回值用于替换。

"\x01Hello\x02".gsub(/[^[:print:]]/) { |x| x.ord }
# => "1Hello2"
于 2013-11-22T14:02:52.813 回答
0

如果您只需要输出带有不可打印字符的字符串来记录或用于调试目的, Object#inspect也是一个选项。

puts "\x01Hello\x02".inspect
# => "\u0001Hello\u0002"
于 2015-04-27T21:59:32.990 回答