Ruby字符串切片索引:str [n..infinity]

Aus*_*son 75 ruby

简单的问题,但在文档中找不到它.

如何将字符串或数组切片n直到永远?

>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
    from (irb):2
Run Code Online (Sandbox Code Playgroud)

Nak*_*lon 154

使用反向索引:

[1..-1]
Run Code Online (Sandbox Code Playgroud)

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 ->
Run Code Online (Sandbox Code Playgroud)

  • 很好的说明,但是,在我看来,您使用“有效”字母(即字符串中存在的字母)有点误导,因为字符串范围之外的数据实际上是未定义的。那可以是任何东西,包括非字符。无论如何,对于这样一个解释得很清楚的答案,+1 :-) (2认同)

Top*_*gio 15

使用-1 :-)

'Austin'[1..-1] # => "ustin"
Run Code Online (Sandbox Code Playgroud)


SRa*_*ack 8

使用Ruby 2.6中引入的无限范围,这非常优雅:

string = 'Austin'
string[1..] # => ustin
Run Code Online (Sandbox Code Playgroud)

希望对某人有用。到目前为止,从最佳方法中删减了两个字符,一旦定期采用无穷范围,它们将非常可读。