我有一个这样的字符串:
val a = "some random test message"
我有一个这样的名单:
val keys = List("hi","random","test")
现在,我要检查字符串是否a
包含所有值keys
。 我们如何利用这个做Scala中的建库函数?
(我知道分裂的方式a
列出,然后做一个检查keys
列表,然后找到解决方案。但我正在寻找解决它更简单地使用标准库函数的方式。)
我有一个这样的字符串:
val a = "some random test message"
我有一个这样的名单:
val keys = List("hi","random","test")
现在,我要检查字符串是否a
包含所有值keys
。 我们如何利用这个做Scala中的建库函数?
(我知道分裂的方式a
列出,然后做一个检查keys
列表,然后找到解决方案。但我正在寻找解决它更简单地使用标准库函数的方式。)
像这样的事情?
keys.exists(a.contains(_))
甚至更地道
keys.exists(a.contains)
简单的情况是测试遏制子串(如在评论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
方法通常线性地扫描整个列表,直到找到匹配或到达终点。
对于较大的物品的数量,一组不仅较好,而且是信息更真实地再现。 集通过散列码等通常优化,并因此需要较少的线性搜索 - 或根本没有。