确定字符串是否包含任何一组字符串

Tom*_*man 17 ruby string

我正在使用Mechanize几个网页进行交互,我正在尝试确定给定的表单提交是否导致错误.

现在我这样做:

agent.page.body.include?("I'm an error message!")
Run Code Online (Sandbox Code Playgroud)

但我刚刚发现了另一条错误消息.既然我不想这样做:

agent.page.body.include?("I'm an error message!") || agent.page.body.include?("Another error message")
Run Code Online (Sandbox Code Playgroud)

如何确定页面正文中是否包含任何错误讯息?

Nak*_*lon 24

error_messages.any? { |mes| agent.page.body.include? mes }
Run Code Online (Sandbox Code Playgroud)

  • 有,当然:`error_messages = ["我是一个错误信息!","另一个错误信息"]` (4认同)

Phr*_*ogz 10

或者,在一个Regex传递中执行:

error_messages = /I'm an error message!|Another error message/
if agent.page.body =~ error_messages
  ...
end
Run Code Online (Sandbox Code Playgroud)

您需要确保转义包含特殊正则表达式字符的任何错误消息.为了使其可维护:

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

你应该只使用它,如果你已经测试过,并且发现Nakilon答案的速度还不够.:)