Scala SeqLike
实施方法contains
。如何干净地实施containsAny
功能?
假设我想知道字符串string
是否包含blacklist
中列出的任何黑名单字符:
val blacklist = List("(", ")", "[", "]", "{", "}", "<", ">")
string containsAny blacklist
如何干净利落地实施第二行?
到目前为止我的版本看起来像这样:
(blacklist.view map string.contains) contains true
答案 0 :(得分:10)
最好的办法是将黑名单设定为一套。
val blacklist = "()[]{}<>".toSet
现在,您可以使用exists
查找字符串中是否存在这些字符。由于Set[T]
扩展T => Boolean
,您可以直接使用该集,而不必编写显式条件。
scala> "I like fish (but not herring)" exists blacklist
res1: Boolean = true
scala> "I like fish, especially salmon!" exists blacklist
res2: Boolean = false
(注意:请注意字符串"I am a string"
和字符之间的区别:'c'
。单字符字符串是字符串,而不是字符。)