scan example array ruby string

array - scan ruby example



¿Eliminar carácter de la cadena si comienza con ese personaje? (6)

Cuidado al usar sub!(/^1/,'''') ! En caso de que la cadena no coincida /^1/ , se devolverá nil . Probablemente deberías usar sub (sin el bang).

¿Cómo puedo eliminar el primer "1" de cualquier cadena si esa cadena comienza con un "1"?

"1hello world" => "hello world" "112345" => "12345"

Estoy pensando en hacer

string.sub!(''1'', '''') if string =~ /^1/

pero me pregunto si hay una mejor manera. ¡Gracias!


¿Por qué no solo incluir la expresión regular en el sub! ¿método?

string.sub!(/^1/, '''')


Si va a usar expresiones regulares para el partido, también puede usarlo para el reemplazo

string.sub!(%r{^1},"")

Por cierto, el %r{} es solo una sintaxis alternativa para expresiones regulares. Puede usar% r seguido de cualquier carácter, por ejemplo, %r!^1! .


Me gustaría publicar una pequeña mejora a la respuesta por lo demás excelente de Zach. El ^ coincide con el comienzo de cada línea en Ruby regex. Esto significa que puede haber múltiples coincidencias por cadena. Kenji preguntó sobre el comienzo de la cadena, lo que significa que tienen que usar esta expresión regular en su lugar:

string.sub!(//A1/, '''')

Compara esto - múltiples coincidencias con esto - una coincidencia .


A partir de Ruby 2.5, puede usar delete_prefix o delete_prefix! para lograr esto de una manera legible

En este caso, "1hello world".delete_prefix("1") .

Más información aquí:

https://blog.jetbrains.com/ruby/2017/10/10-new-features-in-ruby-2-5/

https://bugs.ruby-lang.org/issues/12694

''invisible''.delete_prefix(''in'') #=> "visible" ''pink''.delete_prefix(''in'') #=> "pink"

Nota: también puede usar esto para eliminar elementos del final de una cadena con delete_suffix y delete_suffix.

''worked''.delete_suffix(''ed'') #=> "work" ''medical''.delete_suffix(''ed'') #=> "medical"

https://bugs.ruby-lang.org/issues/13665

He respondido con un poco más de detalle (con puntos de referencia) aquí: ¿Cuál es la forma más fácil de eliminar el primer carácter de una cadena?