在谓词满足后返回值的方法

时间:2016-02-02 22:14:35

标签: scala

根据我使用的条件匹配所有内容:

val c = "this is a test".split(" ").toList//> c  : List[String] = List(this, is, a, test)

c.takeWhile({x => !x.equals("is")})       //> res0: List[String] = List(this)

是否有一个类似于takeWhile的方法,除了它在谓词满意后需要一切?  因此c.takeAfter({x => x.equals("is")})之类的内容会返回List("a" , "test");

2 个答案:

答案 0 :(得分:1)

您可以使用dropWhile

scala>   c.dropWhile(_ != "is")
res4: List[String] = List(is, a, test)

这将删除所有元素,直到它到达谓词,请注意包含谓词字符串,因此您需要检查列表是否为空,如果不是尾部。

答案 1 :(得分:1)

考虑span将列表分成若干项,这些项目包含一个谓词,直到第一个无效,例如

val (l,r) = c.span( _ != "is" )

提供

l: List(this)
r: List(is, a, test)