Элемент в Ruby (и некоторых других языках) имеет прямой и «обратный» индекс. Таким образом, строка длиной nне имеет 0..(n-1)и дополнительные (-n)..-1показатели, но не более - вы не можете использовать >=nили <-nиндексы.
'i''n'|'A' 'u' 's' 't' 'i' 'n'|'A''u''s''t''i''n'|'A' 'u' 's'
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
<- error | you can use this | error ->
Хорошая иллюстрация, однако, использование вами «действительных» букв (т.е. букв, существующих в строке), на мой взгляд, немного вводит в заблуждение, поскольку данные за пределами строки действительно не определены. Это может быть что угодно, в том числе не символы. В любом случае, +1 за такой хорошо объясненный ответ :-)
Довольно элегантно, если использовать бесконечный диапазон, представленный в Ruby 2.6:
string = 'Austin'
string[1..] # => ustin
Надеюсь, это кому-то пригодится. Вырезает пару символов из лучшего подхода до настоящего момента и будет очень удобочитаемым после регулярного принятия бесконечных диапазонов.
Ответы:
Использовать обратную индексацию:
[1..-1]
Элемент в Ruby (и некоторых других языках) имеет прямой и «обратный» индекс. Таким образом, строка длиной
n
не имеет0..(n-1)
и дополнительные(-n)..-1
показатели, но не более - вы не можете использовать>=n
или<-n
индексы.'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's' -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 <- error | you can use this | error ->
источник
Используйте 1 :-)
'Austin'[1..-1] # => "ustin"
источник
Довольно элегантно, если использовать бесконечный диапазон, представленный в Ruby 2.6:
string = 'Austin' string[1..] # => ustin
Надеюсь, это кому-то пригодится. Вырезает пару символов из лучшего подхода до настоящего момента и будет очень удобочитаемым после регулярного принятия бесконечных диапазонов.
источник
Если вы присваиваете строку переменной, вы можете использовать длину / размер
string = 'Austin' string[1..string.length] # => ustin string[1..string.size] # => ustin
источник