2013-11-22 4 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"