Ответ 1
Или вы можете преобразовать целое число в его значение символа:
a[0].chr
В 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)
Я считаю, что селектор диапазона проще всего читать. Может ли кто-нибудь говорить о том, менее эффективен ли он?
То, как [] и [,] определены для класса String.
Посмотрите String API.
Оператор [,] возвращает строку вам, это подстрочный оператор, где, когда оператор [] возвращает символ, который рубин обрабатывает как число при его распечатке.
Я думаю, что 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