在Ruby中扫描字符串数组以进行匹配

时间:2013-04-10 14:33:51

标签: ruby ruby-on-rails-3.2

我有一个数组:

a = ["http://design.example.com", "http://www.domcx.com", "http://subr.com"]

然后如果该数组中的一个元素与字符串匹配,我想返回true:

s = "example.com"

我尝试使用include?any?

a.include? s
a.any?{|w| s=~ /#{w}/}

我不知道如何在这里使用它。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您可以使用any?之类的:

[
  "http://design.example.com",
  "http://www.domcx.com",
  "http://subr.com"
].any?{ |s| s['example.com'] }

替换您的变量名称:

a = [
  "http://design.example.com",
  "http://www.domcx.com",
  "http://subr.com"
]
s = "example.com"
a.any?{ |i| i[s] }

你也可以采用其他几种方式,但是使用any?的优势是它会在你获得一次命中后立即停止,所以如果在命令的早期发生命中,它会快得多。

答案 1 :(得分:2)

以下是怎样的:

a=["http://design.example.com", "http://www.domcx.com", "http://subr.com"]
s= "sus"
p a.any? { |w| w.include? s } #=> false

a=["http://design.example.com", "http://www.domcx.com", "http://subr.com"]
s= "design.example"
p a.any? { |w| w.include? s } #=>true

a=["http://design.example.com", "http://www.domcx.com", "http://subr.com"]
s= "desingn.example"
p a.any? { |w| w.include? s } #=>false

a=["http://design.example.com", "http://www.domcx.com", "http://subr.com"]
s= "example"
p a.any? { |w| w.include? s } #=>true

a=["http://design.example.com", "http://www.domcx.com", "http://subr.com"]
s= "example.com"
p a.any? { |w| w.include? s } #=>true