如何让scala中的mkString跳过null?

时间:2014-01-28 01:41:33

标签: scala

scala> Seq("abc", null).mkString(" ")
res0: String = abc null

但我想只获得“abc”

是否有scala方法可以跳过空值?

3 个答案:

答案 0 :(得分:18)

scala> val seq = Seq("abc", null, "def")
seq: Seq[String] = List(abc, null, def)

scala> seq.flatMap(Option[String]).mkString(" ")
res0: String = abc def

答案 1 :(得分:15)

始终有Seq("abc", null).filter(_ != null).mkString(" ")

答案 2 :(得分:1)

Rex的回答和Eric的第一个评论相结合:

Seq("abc", null).map(Option(_)).collect{case Some(x) => x}.mkString(" ")

第一个map包含导致Seq[Option[String]]的值。 collect然后基本上执行filtermap,放弃None值并仅保留未打包的Some值。