【问题标题】:Determine whether a string contains any of a set of strings判断一个字符串是否包含任何一组字符串
【发布时间】:2011-01-28 21:43:37
【问题描述】:

我正在使用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")

如何判断页面正文是否包含either错误信息?

【问题讨论】:

    标签: ruby string


    【解决方案1】:
    error_messages.any? { |mes| agent.page.body.include? mes }
    

    【讨论】:

    • 当然是:error_messages = ["I'm an error message!", "Another error message"]
    【解决方案2】:

    或者,在一次正则表达式中完成:

    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 的回答速度不够时,您才应该使用它。 :)

    【讨论】:

    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2020-08-26
    • 2014-06-10
    • 2011-02-19
    相关资源
    最近更新 更多