2013-11-22 50 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" 
相關問題