11

ねえ、Groovy でリストの各文字列項目をトリミングしようとしています

list.each() { it = it.trim(); }

ただし、これはクロージャー内でのみ機能し、リスト内の文字列はまだ「 foo 」、「 bar 」、および「 groovy 」です。

どうすればそれを達成できますか?

4

5 に答える 5

23
list = list.collect { it.trim() }
于 2009-09-22T09:15:47.530 に答える
6

スプレッド演算子を使用することもできます。

def list = [" foo", "bar ", " groovy "]
list = list*.trim()
assert "foo" == list[0]
assert "bar" == list[1]
assert "groovy" == list[2]
于 2009-09-22T19:16:53.363 に答える
2

Groovy Quick Startによると、 usingcollectはクロージャから返された値を収集します。

Groovy Shell を使用した簡単な例を次に示します。

groovy:000> ["a    ", "  b"].collect { it.trim() }
===> [a, b]
于 2009-09-22T09:19:08.003 に答える
1

リストを実際に変更する必要がある場合は、list.eachWithIndex { item, idx -> list[idx] = item.trim() } を使用できます。

collect() の方がはるかに優れています。

于 2009-09-23T04:15:13.750 に答える
0

@ sepp2k Rubyで動作すると思います

これはグルーヴィーな list = list.collect() { it.trim(); で機能します。}

于 2009-09-22T09:28:00.857 に答える