2017-12-22 21 views
1

私は文字列/sample/dataを持っています。私はsplitを使用して分割するとき、私は文字列groovyの配列を持つFindall

["","sample","data"]

が、私は空の文字列(複数可)を無視したい、次の結果を得ることができます。だから私はそれは私にエラー「cannot call String[] findAll with argument bool」を与え、

"/sample/data".split('/').findAll(it != "") 

を次のコードを試してみました。

空の文字列を含まないリストを分割して取得するにはどうすればよいですか?あなたは以下のように行うことができます

+1

括弧ではなく、中括弧を使用します。 findAllメソッドはクロージャが必要です。 –

+0

ありがとうございました。 – Kajal

答えて

1

println "/sample/data".split('/').findAll {it} 

findAll {it}は、すべての非空の値を取得します。

+0

ラオーにありがとう。それは私の問題を解決しました。 – Kajal

3

分割メソッドは配列を返します。あなたがリストを必要とする場合 、また、あなたがこのケースでのfindAllを使用する必要はありませんトークン化

"/sample/data".tokenize('/') 

を使用しています。

1

パレンズが機能します(問題のコメントを参照)。だからあなたのソリューションは、すでに近いです:

"https://stackoverflow.com/a/b".split("/").findAll() 

Groovyの機能のほとんどがアイデンティティクロージャと関数を呼び出しますゼロアリティを、持っているので。そして、空の文字列は偽とみなされるので、これはそれらをフィルタリングします。

関連する問題