2010-01-20 2 views
18

Я знаком с методом Ruby's include? для строк, но как я могу проверить строку для нескольких вещей?Ruby: Как проверить, содержит ли строка несколько элементов?

В частности, мне нужно проверить, если строка содержит «Fwd:» или «FW:» (и должно быть чувствительно к регистру)

Пример строка будет выглядеть так: «Постоянная переадресация вызовов: Ваш Amazon.com заказ отправлен»

ответ

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

вы также можете использовать что-то вроде

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

Хотя лично мне нравится вариант с использованием регулярных выражений лучше в этом случае (особенно, как вы должны вызвать downcase в второй, чтобы сделать регистр нечувствительным).

+1

Спасибо. Используя регулярное выражение ... как бы вы перевели эту строку, чтобы сказать «если у the_string нет fwd: | fw:»? – Shpigford

+0

А также есть ли официальный термин для использования '= ~' – Shpigford

+1

. Есть оператор '! ~', Который точно такой же, как и отрицание результата '= ~'. Использование '= ~' обычно называется просто сопоставлением с регулярным выражением. Не знаю, считается ли это официальным термином. – sepp2k

Смежные вопросы