我有一个String
类型的数组,看起来像:
[[""],["lorem ipsum", "foo", "bar"], [""], ["foo"]]
我想要做的是过滤掉数组中的所有元素,这些元素本身就是一个空数组(在本例中,“空数组”,我指的是只包含空字符串的数组),离开我只是:
[["lorem ipsum", "foo", "bar"], ["foo"]]
然而,我很难找到一种方法来做到这一点(对Scala来说还是新手) - 任何帮助都非常感激!
感谢。
答案 0 :(得分:16)
编辑(使用Rogach的简化):
array.filterNot(_.forall(_.isEmpty))
答案 1 :(得分:0)
在你的描述中,你会问如何
过滤掉数组中包含的所有元素 空字符串。
当前接受的答案是这样做的,但也会过滤掉空数组和包含多个空字符串的数组(即不只是[""]
,还有[]
和["", "", ""]
等。 (事实上,第一部分x.isEmpty ||
完全是多余的。)从字面上翻译您的要求,如果您的数组是xss
,则需要
xss.filter(_ != Array("")) // does not work!
这不起作用,因为Java数组的equals
方法doesn't work as you might expect。相反,在比较数组时,请使用sameElements
或deep
:
xss.filterNot(_ sameElements Seq(""))
xss.filter(_.deep != Seq(""))
在idomatic Scala代码中,您不会使用Array
,所以这不会经常出现。首选Vector
或List
。
答案 2 :(得分:0)
在您的情况下,您可以使用:
$
答案 3 :(得分:-1)
使用以下内容:
{{1}}