我有一个这样的字符串:
val a = "some random test message"
我有一个这样的清单:
val keys = List("hi","random","test")
现在,我想检查字符串a
是否包含keys
中的任何值。我们如何使用Scala的内置库函数来完成这项工作?
(我知道将a
拆分为List然后使用keys
列表进行检查然后找到解决方案的方法。但我正在寻找一种更简单地使用标准库来解决它的方法功能。)
答案 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
方法通常会线性扫描整个列表,直到找到匹配或到达结尾。
对于大量的项目,一组不仅是优选的,而且是更真实的信息表示。集合通常通过哈希码等进行优化,因此需要较少的线性搜索 - 或者根本不需要。