Scala "does not contain" 与字符串拆分

Scala "does not contain" with String split

我第一次尝试 Scala,不知道如何根据 not contains 进行过滤。 我有以下查询;

.filter(_.get[Option[String]]("status") map(_ split "," contains "Pending") getOrElse(false))

但是我想做如下的事情;

.filter(_.get[Option[String]]("status") map(_ split "," does not contain "Pending") getOrElse(false))

有人可以帮忙吗?

找到解决方案;

.filter(_.get[Option[String]]("status") map(a => !(a split "," contains "Pending")) getOrElse(false))

谢谢。

您可以使用 existsforall 来简化此操作。如果集合的任何或所有元素的条件为 true,则这些函数 return 为真。

所以模式

Option[String].map(???).getOrElse(false)

可以

Option[String].exists(???)

和条件

!(a split "," contains "Pending")

可以

a.split(",").forall(_ != "Pending")

将这两个应用到原始代码得到

.filter(_.get[Option[String]]("status").exists(_.split(",").forall(_ != "Pending")))

但我会推荐一个本地函数来澄清这段代码:

def notPending(s: String) = s.split(",").forall(_ != "Pending")

.filter(_.get[Option[String]]("status").exists(notPending))

这读作“获取状态选项存在且状态不是未决的所有值”