Сведения о вопросе

Oleksandr

15:46, 13th August, 2020

Теги

ruby   arrays    

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

Просмотров: 387   Ответов: 7

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

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

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



  Сведения об ответе

#hash

10:13, 19th August, 2020

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

a[0].chr


  Сведения об ответе

$DOLLAR

06:32, 18th August, 2020

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


  Сведения об ответе

VERSUION

03:42, 1st August, 2020

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


  Сведения об ответе

crush

18:35, 16th August, 2020

Суммировать:

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

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

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

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


  Сведения об ответе

PHPH

23:05, 17th August, 2020

@Chris ,

Именно так определяются [] и [,] для класса String.

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


  Сведения об ответе

ASER

02:22, 18th August, 2020

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


  Сведения об ответе

dump

19:43, 14th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться