简单的问题,但在文档中找不到。
如何将字符串或数组从n
切片到永远?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
答案 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
希望对某人很方便。到目前为止,从最佳方法中切出了几个字符,一旦定期采用无穷范围,它们将非常可读。