Подтвердить что ты не робот

Ruby - преобразовать целое число в строку

В Ruby попытка распечатать отдельные элементы строки вызывает у меня проблемы. Вместо того, чтобы видеть каждого символа, я вижу их значения ASCII:

>> a = "0123"
=> "0123"
>> a[0]
=> 48

Я смотрю онлайн, но не могу найти способ вернуть исходное "0". Я немного новичок в Ruby, я знаю, что это должно быть что-то простое, но я просто не могу найти его.

4b9b3361

Ответ 1

Или вы можете преобразовать целое число в его значение символа:

a[0].chr

Ответ 2

Вы хотите [0,1] вместо [0].

Ответ 3

Я считаю, что это меняется в Ruby 1.9, так что "asdf" [2] дает "d", а не код символа

Ответ 4

Подводя итог:

Это поведение будет уходить в версии 1.9, в котором сам символ возвращается, но в предыдущих версиях попытка обращения к одному символу строки по его позиции символа вернет свое значение символа (так что "ABC" [ 2] возвращает 67)

Существует несколько методов, которые возвращают диапазон символов из строки (см. документы Ruby в методе String ). Все следующего возврата "C" :

"ABC"[2,1] 
"ABC"[2..2]
"ABC".slice(2,1)

Я считаю, что селектор диапазона проще всего читать. Может ли кто-нибудь говорить о том, менее эффективен ли он?

Ответ 5

@Chris,

То, как [] и [,] определены для класса String.

Посмотрите String API.

Ответ 6

Оператор [,] возвращает строку вам, это подстрочный оператор, где, когда оператор [] возвращает символ, который рубин обрабатывает как число при его распечатке.

Ответ 7

Я думаю, что 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