Ruby string slice index: str[n..infinity]

Solution 1:

Use reverse indexing:

[1..-1]

An element in Ruby (and some other languages) has straight forward index and a "reversed" one. So, string with length n has 0..(n-1) and additional (-n)..-1 indexes, but no more -- you can't use >=n or <-n indexes.

  '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 ->

Solution 2:

Use -1 :-)

'Austin'[1..-1] # => "ustin"

Solution 3:

Pretty elegant using the endless range introduced in Ruby 2.6:

string = 'Austin'
string[1..] # => ustin

Hope that's handy for someone. Cuts a couple of characters from the best approach until now, and will be very readable once endless ranges are regularly adopted.

Solution 4:

If you assign the string to a variable, you can use length/size

string = 'Austin'
string[1..string.length]  # => ustin
string[1..string.size]    # => ustin