我在这里看到了几个线程,它们显示了最有效的方式来根据子字符串数组检查字符串,如果匹配则返回布尔值。
str = "foobazbar"
arr = ["baz", "clowns"]
result = arr.any? { |substring| str.include?(substring) } # solution
result => true
但是,尽管该解决方案既优雅又高效,但是有什么方法可以返回比赛本身吗?使用上面的示例,我还想知道匹配为baz
。做到这一点的最佳方法是什么?
str = "foobazbar"
arr = ["baz", "clowns"]
result = arr.find { |s| str.include?(s) }
[result
此时是arr
中的第一个元素,它是str
的子字符串或nil
str = "foobazbar"
arr = ["baz", "clowns", "bar"]
r = Regexp.union(arr) #=> /baz|clowns|bar/
str[r] #=> "baz"
str.scan(r) #=> ["baz", "bar"]