Scala特殊字符验证给出了错误的结果

时间:2017-05-31 16:18:15

标签: scala

我正在尝试对scala字符串进行一些验证

它仅为res0提供了正确的结果,所有其他的都给出了错误的错误

我期待res1,res2,res3为真,因为字符串中有一个坏字符

scala>  val badChars = Set( ',' , '-' , '\\' , '/' , '|' , '\t' )
badChars: scala.collection.immutable.Set[Char] = Set(\,         , |, -, ,, /)

scala> var str ="surender"
str: String = surender

scala> str.forall(badChars.contains(_))
res0: Boolean = false

scala> var str ="surender-"
str: String = surender-

scala> str.forall(badChars.contains(_))
res1: Boolean = false

scala> var str ="surender,"
str: String = surender,

scala> str.forall(badChars.contains(_))
res2: Boolean = false

scala> var str ="surender|"
str: String = surender|

scala> str.forall(badChars.contains(_))
res3: Boolean = false

有人可以解释我这里出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

forall检查谓词是否适用于所有 String中的元素。

进行预期检查的一种方法:

str.exists(badChars.contains(_))

答案 1 :(得分:1)

如果谓词适用于每个成员,则

forall仅返回true。如果您使用了exists,如果谓词适用于任何成员,则返回true,您的代码可能会按预期工作。