ruby - 检查字符串是否包含数组中的子字符串并获得匹配项

标签 ruby

我在这里看到了几个线程,它们显示了根据子字符串数组检查字符串并在匹配时返回 bool 值的最有效方法。

str = "foobazbar"
arr = ["baz", "clowns"]
result = arr.any? { |substring| str.include?(substring) } # solution
result => true

但是,尽管该解决方案既优雅又高效,是否有任何方法可以返回匹配项本身?使用上面的示例,我还想知道匹配项是 baz。实现此目标的最佳方法是什么?

最佳答案

str = "foobazbar"
arr = ["baz", "clowns", "bar"]

r = Regexp.union(arr) #=> /baz|clowns|bar/ 

str[r]                #=> "baz"
str.scan(r)           #=> ["baz", "bar"] 

参见 Regexp::union , String#[]String#scan .

关于ruby - 检查字符串是否包含数组中的子字符串并获得匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58148738/

相关文章:

ruby-on-rails - 按 updated_at 对 ruby​​ 数组排序

ruby - 如何在 ruby​​ 中读取没有 quote_char 的 CSV?

ruby-on-rails - 如果有条件,从 ruby​​ 数组中获取值

ruby-on-rails - 如何防止 Rails 在找不到带有 'id' = 的文章时显示个人信息

ruby - 包含模块后在main中设置实例变量?

ruby - 遍历数组的散列

ruby-on-rails - 如何导航到 Sublime Text 中 Ruby on Rails 方法的方法声明?

ruby - 如何序列化数组并反序列化

ruby - 如何在 Ruby 中对 float 数组进行排序?

mysql - Rails 5 Activerecord : How to show 'type of' record per 'user' in a dashboard view