regulares - metodos en ruby
Obtención de una subcadena en Ruby por x número de caracteres (5)
Estoy tratando de producir un código Ruby que tome una cadena y devuelva una nueva, con un número x de caracteres eliminados de su extremo; pueden ser letras reales, números, espacios, etc.
Ej: dada la siguiente cadena
a_string = "a1wer4zx"
Necesito una forma sencilla de obtener la misma cadena, menos - digamos - los 3 últimos caracteres. En el caso anterior, eso sería "a1wer". La forma en que lo estoy haciendo ahora parece muy complicada:
an_array = a_string.split(//,(a_string.length-2))
an_array.pop
new_string = an_array.join
¿Algunas ideas?
¿Qué tal esto?
s[0, s.length - 3]
O esto
s[0..-4]
editar
s = "abcdefghi"
puts s[0, s.length - 3] # => abcdef
puts s[0..-4] # => abcdef
Otra opción podría ser utilizar el método de slice
a_string = "a1wer4zx"
a_string.slice(0..5)
=> "a1wer4"
Documentación: http://ruby-doc.org/core-2.5.0/String.html#method-i-slice
Si lo necesitas en rieles puedes usarlo first ( código fuente )
s = ''1234567890''
x = 4
s.first(s.length - x) # => "123456"
También hay last ( código fuente )
s.last(2) # => "90"
alternativamente verifique from/to
Usa algo como esto:
s = "abcdef"
new_s = s[0..-2] # new_s = "abcde"
Vea el método de slice
aquí: http://ruby-doc.org/core/classes/String.html