检查List中的值是否是String的一部分

时间:2013-04-16 20:10:28

标签: string scala list

我有一个这样的字符串:

val a = "some random test message"

我有一个这样的清单:

val keys = List("hi","random","test")

现在,我想检查字符串a是否包含keys中的任何值。我们如何使用Scala的内置库函数来完成这项工作?

(我知道将a拆分为List然后使用keys列表进行检查然后找到解决方案的方法。但我正在寻找一种更简单地使用标准库来解决它的方法功能。)

2 个答案:

答案 0 :(得分:69)

这样的东西?

keys.exists(a.contains(_)) 

或甚至更具惯用力

keys.exists(a.contains)

答案 1 :(得分:9)

简单的情况是测试子字符串包含(如rarry的答案中所述),例如

keys.exists(a.contains(_)) 

你没有说你是否真的想要找到整个单词匹配。由于rarry的答案假设你没有,所以这是一个假设你做的替代方案。

val a = "some random test message"
val words = a.split(" ")
val keys = Set("hi","random","test") // could be a List (see below)
words.exists(keys contains _)

请记住,键的列表仅对小型列表有效。使用列表,contains方法通常会线性扫描整个列表,直到找到匹配或到达结尾。

对于大量的项目,一组不仅是优选的,而且是更真实的信息表示。集合通常通过哈希码等进行优化,因此需要较少的线性搜索 - 或者根本不需要。