Определите, содержит ли строка какой-либо из набора строк - PullRequest
17 голосов
/ 29 января 2011

Я использую Mechanize для взаимодействия с несколькими веб-страницами и пытаюсь определить, привела ли ошибка к отправке данной формы.

Сейчас я делаю это:1004 *

agent.page.body.include?("I'm an error message!")

Но я только что обнаружил другое сообщение об ошибке.Поскольку я не хочу делать:

agent.page.body.include?("I'm an error message!") || agent.page.body.include?("Another error message")

Как я могу определить, содержит ли тело страницы либо сообщение об ошибке?

Ответы [ 2 ]

23 голосов
/ 29 января 2011
error_messages.any? { |mes| agent.page.body.include? mes }
10 голосов
/ 29 января 2011

В качестве альтернативы, сделайте это за один проход Regex:

error_messages = /I'm an error message!|Another error message/
if agent.page.body =~ error_messages
  ...
end

Вам нужно будет избегать любых сообщений об ошибках, которые содержат специальные символы регулярного выражения.Чтобы сделать его поддерживаемым:

if agent.page.body =~ Regexp.union("foo", "bar", "jim.bob", "jam|jam")
  ...
end

Вы должны использовать это только в том случае, если вы проверили и обнаружили, что скорости ответа Накилона недостаточно.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...