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"
Другие вопросы по тегам