2010-01-20 23 views
18

Jestem zaznajomiony z metodą Ruby na include?, ale jak mogę sprawdzić ciąg znaków dla wielu rzeczy?Ruby: Jak sprawdzić, czy ciąg zawiera wiele elementów?

Konkretnie, muszę sprawdzić, czy ciąg zawiera „Fwd:” lub „FW:” (i powinna być uwzględniana wielkość liter)

Przykład ciąg byłoby: „FWD: Twój Amazon.com zamówienie zostało wysłane”

Odpowiedz

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

można również użyć coś

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

Choć osobiście lubię wersję używając regex lepiej w tym przypadku (zwłaszcza jak trzeba zadzwonić downcase w drugi, aby uczynić go niewrażliwym na wielkość liter).

+1

Dzięki. Używanie wyrażenia regularnego ... w jaki sposób przetłumaczyłbyś ten wiersz, by powiedzieć "jeśli the_string NIE ma fwd: | fw:"? – Shpigford

+0

A także, czy istnieje oficjalny termin używania '= ~' – Shpigford

+1

Jest operator '! ~', Który jest dokładnie taki sam jak zanegowanie wyniku '= ~'. Używanie '= ~' jest zwykle określane jako dopasowanie do wyrażenia regularnego. Nie wiem, czy to się liczy jako oficjalny termin. – sepp2k

Powiązane problemy