开发者

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

开发者 https://www.devze.com 2023-01-13 17:37 出处:网络
Easy question, but couldn\'t find it in the doc. How do I slice a string or array from n until forever?

Easy question, but couldn't find it in the doc.

How do I slice a string or array from n until forever?

>> 'Austin'[1..3]开发者_如何转开发
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
    from (irb):2


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


Use -1 :-)

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


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.


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
0

精彩评论

暂无评论...
验证码 换一张
取 消