2015-03-12 13 views
8

Sto facendo uno gsub per scambiare "bad" per "good". C'è un modo per usare capitalize in modo che cambierà maiuscolo e minuscolo? O dovrò scrivere lo def due volte?È possibile eseguire un `gsub` senza distinzione tra maiuscole e minuscole?

def add_more_ruby(string) 
    string.gsub('bad','good').capitalize 
end 
+1

Se non si è sicuri di un comportamento di un metodo, è meglio non fare un ipotesi di descriverla. Qui, la tua menzione di 'capitalize' è irrilevante per ciò che volevi veramente fare, e rende la tua domanda molto difficile da capire. Invece, scrivi ciò che vuoi fare in parole ordinarie. – sawa

+2

Ti aspetti che 'Bad' venga sostituito con 'Buono' o' buono'? – Stefan

risposta

24

È possibile passare Regexp anziché String, con i opzione che indica che questo regexp è case insensitive:

def add_more_ruby(string) 
    string.gsub(/bad/i, 'good') 
end 

nota che sostituirà non solo 'bad' e 'BAD', ma anche, ad esempio , 'bAd'. Se si desidera sostituire solo tutto maiuscolo o tutto minuscolo, si può fare:

string.gsub(/bad|BAD/, 'good') 
+0

Grazie mille. Mi ha salvato il tempo. – Mano