2012-03-31 12 views
11

Tutte le mie string delete con regex usano gsub, c'è un modo più breve? string.gsub(/\A.*\//,'')Esiste un Regex Delete in Ruby?

+3

Questi tre personaggi ti stanno davvero prendendo? –

+0

lol sembra che stia facendo molte eliminazioni di stringhe. Ma farlo via gsub, sembra che sto sbagliando. Dovrebbe essere fatto tramite string.delete, no? –

+0

string.delete accetta solo quali caratteri eliminare, nessuna espressione regolare. string.slice! può essere usato per rimuovere parte di una stringa in base a una regexp ma è più lungo di gsub ... – Pafjo

risposta

5

Un modo è quello di aggiungere i propri metodi brevi:

class String 

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

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

end 

In genere questo codice sarebbe andato in un lib/directory, ad esempio lib/string-extensions.rb

Heads up che alcuni programmatori non amano questo perché si tratta di patch per le scimmie. Personalmente mi piace per i progetti perché rende il codice più facile da capire - una volta che ho il metodo "del", posso rapidamente vedere che le chiamate ad esso stanno cancellando la regexp.

+0

+1, anche se sono sorpreso che nessuno abbia votato. –

3

Non credo.

Stringa :: elimina elimina caratteri e non corrisponde alla regex, è un approccio completamente diverso.

L'unico modo in cui posso pensare di rendere questa linea "più corta" è utilizzare string.gsub!(/\A.*\//,'') (notare il botto lì).

Questo è il modo di andare, credo :)

+0

@Vache haha, giusto. corretto: P – Castilho

5

Si potrebbe invece indicare la parte della stringa che si desidera mantenere . . .

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