2014-05-16 20 views

cevap

12

Evet aşağıda,: bunu yazmak için daha iyi bir yolu var mı Enumerable#any?

verilen bloğa koleksiyonun her bir öğeyi geçirir: Burada

if %w(string1 string2 string3).any? { |s| my_string.include? s } 
    # your code 
end 

belgelerdir . Yöntem, blok false veya nil dışında bir değer döndürdüğünde true değerini döndürür. Blok verilmezse, Ruby, { |obj| obj } örtük bir blok ekler ve bu da neden olur? Koleksiyon üyelerinden en az biri false veya nil değilse, true değerini döndürür.
[13] pry(main)> ary = %w(string1 string2 string3) 
=> ["string1", "string2", "string3"] 
[14] pry(main)> Regexp.union(ary) 
=> /string1|string2|string3/ 
[15] pry(main)> "abbcstring2"[Regexp.union(ary)] 
=> "string2" 
[16] pry(main)> "abbcstring"[Regexp.union(ary)] 
=> nil 

Sadece Regexp::union ve str[regexp] → new_str or nil okuyun: Burada

başka bir yol (daha hızlı) 'dir.

+2

Vay riske (burada normal bir ifade kullanabilirsiniz! çok güzel ve hassas :) – Pavan

+0

oh bu harika bir açıklama, teşekkürler. – Kuroun

3

Eh, her zaman başka bir jwz alıntı :)

if mystring =~ /string1|string2|string3/ 
    ... 
end 
İlgili konular