5

ScalaSeqLike实现了一个方法contains。我怎样才能干净地实现一个containsAny功能?

假设我想查明一个字符串是否string包含以下中的任何黑名单字符blacklist

val blacklist = List("(", ")", "[", "]", "{", "}", "<", ">")
string containsAny blacklist

干净地实施第二行的最佳方法是什么?

到目前为止,我的版本如下所示:

(blacklist.view map string.contains) contains true
4

1 回答 1

10

您最好的选择是设置黑名单。

val blacklist = "()[]{}<>".toSet

现在您可以使用exists来查找字符串中是否存在这些字符。由于Set[T]extends 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'。一个字符的字符串是字符串,而不是字符。)

于 2013-03-23T15:24:24.610 回答