2013-11-22 51 views
3

我有一个带有不可打印字符的字符串。Ruby将非打印字符转换为数字

什么我目前做的是用波浪线替换它们:

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

但是,我真的希望将它们转化为自己的整数值。

我想这一点,但它总是输出0

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

的思考?

回答

6

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

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

在11分钟内我会接受这个答案。 – screenmutt

0

Object#inspect也是一种选择,如果你只需要输出字符串与非打印字符记录或进行调试。

puts "\x01Hello\x02".inspect 
# => "\u0001Hello\u0002" 
相关问题