Ruby — преобразование целого числа в строку
Вопрос
В Ruby попытка распечатать отдельные элементы строки вызывает у меня затруднения.Вместо того, чтобы видеть каждый символ, я вижу их значения ASCII:
>> a = "0123"
=> "0123"
>> a[0]
=> 48
Я поискал в Интернете, но не нашел способа вернуть из него исходный «0».Я немного новичок в Ruby и знаю, что это должно быть что-то простое, но я просто не могу его найти.
Решение
Или вы можете преобразовать целое число в его символьное значение:
a[0].chr
Другие советы
Вам нужен [0,1] вместо [0].
Я считаю, что в Ruby 1.9 это изменилось, так что "asdf"[2] дает "d", а не код символа.
Обобщить:
Такое поведение исчезнет в версии 1.9, в которой возвращается сам символ, но в предыдущих версиях попытка сослаться на один символ строки по его позиции символа будет возвращать его значение символа (поэтому "ABC"[2] возвращает 67)
Существует ряд методов, которые возвращают диапазон символов из строки (см. документацию Ruby по String метод среза) Все следующие возвращают «C»:
"ABC"[2,1]
"ABC"[2..2]
"ABC".slice(2,1)
Я считаю, что селектор диапазона легче всего читать.Может ли кто-нибудь сказать, является ли это менее эффективным?
Оператор [,] возвращает вам строку. Это оператор подстроки, где оператор [] возвращает символ, который Ruby обрабатывает как число при его распечатке.
Я думаю each_char
или chars
лучше описывает то, что вы хотите.
irb(main):001:0> a = "0123"
=> "0123"
irb(main):002:0> Array(a.each_char)
=> ["0", "1", "2", "3"]
irb(main):003:0> puts Array(a.each_char)
0
1
2
3
=> nil