Ruby конвертирует непечатные символы в числа
У меня есть строка с непечатными символами.
В настоящее время я заменяю их тильдой, используя:
string.gsub!(/^[:print:]]/, "~")
Тем не менее, я бы хотел преобразовать их в целочисленные значения.
Я пробовал это, но это всегда выводит 0
string.gsub!(/[^[:print:]]/, "#{$1.to_i}")
Мысли?
2 ответа
Решение
Строка # gsub, Строка #gsub! принять необязательный блок. Возвращаемое значение блока используется для подстановки.
"\x01Hello\x02".gsub(/[^[:print:]]/) { |x| x.ord }
# => "1Hello2"
Object#inspect также является опцией, если вам просто нужно вывести строку с непечатаемыми символами для регистрации или для целей отладки.
puts "\x01Hello\x02".inspect
# => "\u0001Hello\u0002"