我是Ruby的新手。是否有更好的方式來寫:Ruby檢查一個字符串是否包含多個不同的字符串?
if (mystring.include? "string1") || (mystring.include? "string2") ||
(mystring.include? "string3")
我是Ruby的新手。是否有更好的方式來寫:Ruby檢查一個字符串是否包含多個不同的字符串?
if (mystring.include? "string1") || (mystring.include? "string2") ||
(mystring.include? "string3")
是的,如下:
if %w(string1 string2 string3).any? { |s| my_string.include? s }
# your code
end
下面是文檔:Enumerable#any?
越過集合的每個元素給定塊。如果該塊返回的值不是false或nil,則該方法返回
true
。如果沒有給出塊,Ruby會添加一個隱含塊{ |obj| obj }
,這會導致任何?如果至少有一個收集成員不是false
或nil
,則返回true。
這裏是另一種方式(更最快):
[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
嗯,你總是可以使用正則表達式在這裏(冒着另一個JWZ報價:)
if mystring =~ /string1|string2|string3/
...
end
哇!非常漂亮和精確:) – Pavan
哦,這很好的解釋,謝謝。 – Kuroun