49

我有一个这样的字符串:

val a = "some random test message"

我有一个这样的列表:

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

现在,我想检查字符串是否a包含来自keys. 我们如何使用 Scala 的内置库函数来做到这一点?

(我知道拆分a到 List 的方式,然后用keyslist 进行检查,然后找到解决方案。但我正在寻找一种更简单地使用标准库函数来解决它的方法。)

4

2 回答 2

81

像这样的东西?

keys.exists(a.contains(_)) 

或者更惯用的说法

keys.exists(a.contains)
于 2013-04-16T20:13:49.120 回答
10

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

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方法通常线性扫描整个列表,直到找到匹配项或到达末尾。

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

于 2013-04-17T18:29:51.013 回答