2010-01-20 16 views
18

Ho familiarità con il metodo include? di Ruby per le stringhe, ma come posso controllare una stringa per più cose?Ruby: come verificare se una stringa contiene più elementi?

In particolare, ho bisogno di controllare se una stringa contiene "Fwd:" o "FW:" (e dovrebbe essere case insensitive)

Esempio stringa sarebbe: "FWD: Il tuo Amazon.com ordine è stato spedito"

risposta

30
the_string =~ /fwd:|fw:/i 

si potrebbe anche usare qualcosa come

%w(fwd: fw:).any? {|str| the_string.downcase.include? str} 

anche se personalmente mi piace la versione utilizzando l'espressione regolare meglio in questo caso (in particolare, come si deve chiamare in downcase la seconda per renderla insensibile alle maiuscole/minuscole).

+1

Grazie. Usando la regex ... come tradurrebbe quella riga per dire "se the_string NON ha fwd: | fw:"? – Shpigford

+0

E inoltre, esiste un termine ufficiale per l'uso di '= ~' – Shpigford

+1

C'è l'operatore '! ~' Che è esattamente lo stesso di negare il risultato di '= ~'. L'uso di '= ~' di solito viene definito come confronto con un'espressione regolare. Non so se conta come un termine ufficiale. – sepp2k

Problemi correlati