判断一个字符串是否包含一组字符串中的任意一个

17

我正在使用 Mechanize 与一些网页进行交互,并尝试确定给定的表单提交是否导致错误。

现在我正在进行以下操作:

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个回答

24
error_messages.any? { |mes| agent.page.body.include? mes }

4
当然,以下是需要翻译的内容:error_messages = ["我是错误信息!", "另一个错误信息"] - Phrogz

10

或者,使用一个正则表达式实现:

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

如果你已经测试过,发现Nakilon的答案速度不够快,那么你应该使用这个方法。 :)


1
太懒了,不想用正则表达式转义来编写解决方案))) +1 - Nakilon
1
简化正则表达式转义:从这里的注释中 Regexp.union(*error_messages) http://stackoverflow.com/questions/10215590/check-if-string-contains-any-substring-in-an-array-in-ruby#comment13121626_10215848 - Phil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接