Ruby:将字符串与另一个对象(可能是字符串或regexp)进行匹配



我正在编写一个例程,将字符串与对象列表进行比较,每个对象都可以是另一个字符串或RegExp。是否有一种优雅的、以红宝石为中心的方法来处理这个问题?

现在,我正在做这样的事情:

def compare(str, thelist)
  thelist.any? do |item|
    case str
      when item then true
      else false
    end
  end
end
if compare("The String I am testing", ['I am not', /string/i])
  # got a match

这似乎工作得很好,但对我的口味来说感觉有点太黑客化和冗长,所以我只是想知道是否有更好的方法来做到这一点。(我不感兴趣使用像instance_of?-我想出了这个解决方案,因为instance_of?太丑了

使用Ruby 2.2.2

这是你的方法的简化版:

def compare(str, thelist)
  thelist.any? { |item| item.match(str) }
end

你可以这样简化:

def compare(str, thelist)
  thelist.any? { |item| item === str }
end

相关内容

  • 没有找到相关文章

最新更新