6

String次のようなtype の配列の配列があります。

[[""],["lorem ipsum", "foo", "bar"], [""], ["foo"]]

私がやりたいことは、それ自体が空の配列である配列内のすべての要素を除外することです (この場合、「空の配列」とは、空の文字列だけを含む配列を意味します)。と:

[["lorem ipsum", "foo", "bar"], ["foo"]]

しかし、私はこれを行う方法を見つけるのに苦労しています(Scalaにはまだ新しい) - どんな助けも大歓迎です!

ありがとう。

4

4 に答える 4

16

編集(Rogachの単純化による):

array.filterNot(_.forall(_.isEmpty))
于 2012-07-17T13:49:15.537 に答える
0

あなたの説明では、方法を尋ねます

空の文字列のみを含む配列内のすべての要素を除外します。

現在受け入れられている回答はこれを行いますが、空の配列、および複数の空の文字列を含む配列 (つまり、だけ[""]でなく[]["", "", ""]なども除外します (実際、最初の部分x.isEmpty ||は完全に冗長です)。要件を文字通りに翻訳する場合、あなたの配列はxss、あなたが必要です

xss.filter(_ != Array(""))  // does not work!

equalsJava 配列のメソッドが期待どおりに機能しないため、これは機能しません。代わりに、配列を比較するときは、またはのいずれsameElementsかを使用しdeepます。

xss.filterNot(_ sameElements Seq(""))

xss.filter(_.deep != Seq(""))

偶像的な Scala コードではあまり使用しないArrayため、これが頻繁に発生することはありません。Vectorまたはを優先しListます。

于 2012-07-17T18:32:20.710 に答える