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

时间:2010-08-31 17:29:07

标签: ruby

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

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

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

5 个答案:

答案 0 :(得分:144)

使用反向索引:

[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 :(得分:14)

使用-1: - )

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

答案 2 :(得分:4)

尝试使用[1..-1]

答案 3 :(得分:3)

如果将字符串分配给变量,则可以使用长度/大小

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

答案 4 :(得分:3)

使用Ruby 2.6中引入的endless range相当优雅:

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

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