如何在Scala中过滤出字符串向量中的一个ocurrence?
我需要从如何在Scala中过滤出字符串向量中的一个ocurrence?,scala,Scala,我需要从向量(“木材”、“石头”、“魔药”、“石头”、“木材”)创建一个新的向量,但不带字符串“木材”,如果我使用方法filterNot(==“木材”)它会删除与木材“匹配的两个元素。是否有一个过滤器只过滤一次电流 我尝试使用.distinct,但我需要向量中的两个石头。您可以在第一次出现时分割集合,然后将其删除: val (pre, post) = c.span(_ == "lumber") pre.dropRight(1) ++ post 当集合中没有“木材”时,pre
向量(“木材”、“石头”、“魔药”、“石头”、“木材”)
创建一个新的向量,但不带字符串“木材”
,如果我使用方法filterNot(==“木材”)
它会删除与木材“
匹配的两个元素。是否有一个过滤器只过滤一次电流
我尝试使用
.distinct
,但我需要向量中的两个石头。您可以在第一次出现时分割集合,然后将其删除:
val (pre, post) = c.span(_ == "lumber")
pre.dropRight(1) ++ post
当集合中没有“木材”时,pre
将为空,pre.dropRight(1)
将不掉落任何内容
对于2.13,您可以选择使用管道的单衬套:
import scala.util.chaining._
c.span(_ == "lumber").pipe(split => split._1.dropRight(1) ++ split._2)
最简单的方法是使用diff:
val c = Vector("lumber", "stone", "magic potion","stone","lumber")
c diff Vector("lumber")
// result: Vector(stone, magic potion, stone, lumber)
我想最简单的解决方案是使用一点可变状态,这样你就可以跟踪你是否已经过滤了。另一个选择是使用列表
,编写自己的递归函数。谢谢,这绝对是最简单的方法!!!