Pregunta fácil, pero no pude encontrarla en el documento.
¿Cómo corto una cadena o matriz de n
hasta para siempre?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
Pregunta fácil, pero no pude encontrarla en el documento.
¿Cómo corto una cadena o matriz de n
hasta para siempre?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
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 índices 0..(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 ->
Usa 1 :-)
'Austin'[1..-1] # => "ustin"
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.
Si asigna la cadena a una variable, puede usar longitud / tamaño
string = 'Austin'
string[1..string.length] # => ustin
string[1..string.size] # => ustin