Este último funcionará desde Ruby 2.6 y probablemente se convertirá en la forma 'Railsy' de lograrlo; consulte aquí para obtener más información .
SRack el
Respuestas:
165
Utilice la indexación inversa:
[1..-1]
Un elemento en Ruby (y algunos otros lenguajes) tiene un índice directo y uno "invertido". Entonces, la cadena con longitud ntiene índices 0..(n-1)adicionales (-n)..-1, pero no más; no puede usar >=no <-níndices.
'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 ->
Buena ilustración, sin embargo, su uso de letras "válidas" (es decir, las que existen en la cadena) es un poco engañoso en mi opinión, ya que los datos fuera de los límites de la cadena son realmente indefinidos. Eso podría ser cualquier cosa, incluidos los no personajes. De todos modos, +1 para una respuesta tan bien explicada :-)
Bastante elegante usando el rango infinito introducido en Ruby 2.6:
string = 'Austin'
string[1..] # => ustin
Espero que sea útil para alguien. Elimina un par de caracteres del mejor enfoque hasta ahora, y será muy legible una vez que se adopten regularmente rangos infinitos.
Respuestas:
Utilice la indexación inversa:
[1..-1]
Un elemento en Ruby (y algunos otros lenguajes) tiene un índice directo y uno "invertido". Entonces, la cadena con longitud
n
tiene índices0..(n-1)
adicionales(-n)..-1
, pero no más; no puede usar>=n
o<-n
índices.'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 ->
fuente
Usa 1 :-)
'Austin'[1..-1] # => "ustin"
fuente
Bastante elegante usando el rango infinito introducido en Ruby 2.6:
string = 'Austin' string[1..] # => ustin
Espero que sea útil para alguien. Elimina un par de caracteres del mejor enfoque hasta ahora, y será muy legible una vez que se adopten regularmente rangos infinitos.
fuente
Si asigna la cadena a una variable, puede usar longitud / tamaño
string = 'Austin' string[1..string.length] # => ustin string[1..string.size] # => ustin
fuente