检查ruby中的字符串中是否存在两个列表中的一个值

检查ruby中的字符串中是否存在两个列表中的一个值,ruby,Ruby,我有两个具有登录名和文件扩展名的阵列: 登录名=['bob','mark','joe'] 扩展名=['.doc','.xls'] 我需要检查两个列表中的一个值是否存在于字符串中(字符串类似于str=“aaa bob test.txt test text”),如果是,则进行一些工作 如何在Ruby中正确执行此检查 现在我将使用几个循环和if语句来执行此操作 [logins, extensions].all? do |list| list.any? { |match| str.include?

我有两个具有登录名和文件扩展名的阵列: 登录名=['bob','mark','joe'] 扩展名=['.doc','.xls']

我需要检查两个列表中的一个值是否存在于字符串中(字符串类似于str=“aaa bob test.txt test text”),如果是,则进行一些工作

如何在Ruby中正确执行此检查

现在我将使用几个循环和if语句来执行此操作

[logins, extensions].all? do |list|
  list.any? { |match| str.include? match }
end
您有两个列表,登录名和扩展名。您要确保
所有的?
都做了一些事情,并且“某事”是字符串包含了它们元素的
any?

不过,使用正则表达式的答案是性能更好,即使编写起来不那么简单

您有两个列表,登录名和扩展名。您要确保
所有的?
都做了一些事情,并且“某事”是字符串包含了它们元素的
any?

不过,使用正则表达式的答案是性能更好,即使编写起来不那么简单

您还可以使用:

如果两者之一不匹配,则返回
nil
;如果两者都匹配,则返回整数

作为替代方案,使用Ruby 2.4:

str.match?(logins) && str.match?(extensions)
它将返回一个布尔值。

您还可以使用:

如果两者之一不匹配,则返回
nil
;如果两者都匹配,则返回整数

作为替代方案,使用Ruby 2.4:

str.match?(logins) && str.match?(extensions)

它将返回一个布尔值。

您可以简单地添加数组以获得具有唯一值的并集,然后迭代以检查字符串是否具有匹配值

   str = 'aaa bob test.txt test text'
  (logins + extensions).any? { |word| str.include?(word) }

这将返回“true”或“false”

您可以简单地添加数组以获得具有唯一值的并集,然后迭代以检查字符串是否具有匹配值

   str = 'aaa bob test.txt test text'
  (logins + extensions).any? { |word| str.include?(word) }

这将返回“true”或“false”

谢谢,这对我来说更具可读性,但速度较慢。结果应用程序有大约500条记录的登录数组。谢谢,这对我来说更可读,但工作速度较慢。结果应用程序有大约500条记录的登录数组。