Ruby将不可打印的字符转换为数字

时间:2013-11-22 14:01:25

标签: ruby regex string non-printing-characters

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

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

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

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

我试过了,但它总是输出0

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

思想?

2 个答案:

答案 0 :(得分:7)

String#gsubString#gsub!接受可选块。块的返回值用于替换。

"\x01Hello\x02".gsub(/[^[:print:]]/) { |x| x.ord }
# => "1Hello2"

答案 1 :(得分:0)

如果您只需输出带有不可打印字符的字符串进行记录或调试,

Object#inspect也是一个选项。

puts "\x01Hello\x02".inspect
# => "\u0001Hello\u0002"