2012-03-31 14 views
11

Todas mis cadenas de borrado con expresiones regulares utilizan gsub, ¿hay alguna manera más corta? string.gsub(/\A.*\//,'')¿Hay una eliminación Regex en Ruby?

+3

¿Esos tres personajes realmente te atrapan? –

+0

lol parece estar haciendo un montón de borrados de cadena. Pero hacerlo a través de gsub, parece que lo estoy haciendo mal. Debería hacerse a través de string.delete, ¿no? –

+0

string.delete solo toma los caracteres que desea eliminar, no la expresión regular. string.slice! se puede usar para eliminar parte de una cadena basada en una expresión regular, pero es más larga que gsub ... – Pafjo

Respuesta

5

Una forma es añadir sus propios métodos cortos:

class String 

    def del(regexp) 
    gsub(regexp,'') 
    end 

    def del!(regexp) 
    gsub!(regexp,'') 
    end 

end 

Normalmente este código iría en un directorio lib /, por ejemplo lib/string-extensions.rb

Heads up que a algunos programadores realmente les disgusta esto porque es parchear los monos. Personalmente me gusta para proyectos porque hace que el código sea más fácil de entender: una vez que tengo el método "del", puedo ver rápidamente que las llamadas a él simplemente eliminan la expresión regular.

+0

+1, aunque me sorprende que nadie votó esto. –

3

No lo creo.

Cadena :: eliminar borra caracteres, y no coincide con regex, es un enfoque completamente diferente.

La única forma en que puedo pensar en hacer que esa línea tuya sea "más corta" es usar string.gsub!(/\A.*\//,'') (fíjate en la explosión allí).

Ese es el camino a seguir, creo :)

+0

@Vache jaja, a la derecha. lo corrigió: P – Castilho

5

Se puede especificar el lugar parte de la cadena que desea mantener . . .

string[/[^\/]*$/] 
Cuestiones relacionadas