2009-09-22 64 views
11

嘿,我尝试修剪在常规分配“它”在每个迭代(常规)

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

的列表中的每个字符串项目,但在封内这只作品,在列表中的字符串仍然是“ foo“,”bar“和”groovy“。

我该如何做到这一点?

回答

23
list = list.collect { it.trim() } 
+0

list = list.collect {it.trim()} ty – codevour 2009-09-22 09:21:18

+0

对,不能在没有参数的情况下抛弃parens。固定。 – sepp2k 2009-09-22 09:24:41

+2

美妙而整洁的解决方案。不胜感激。我可以做这样的事情:items = ViewDefinition.findAllByIdInList(params.id.split(“ - ”)。collect {it as long}) – 2011-06-29 11:36:32

2

按照Groovy Quick Start,用collect将收集从封闭返回的值。

下面是使用Groovy的外壳一个小例子:

groovy:000> ["a ", " b"].collect { it.trim() } 
===> [a, b] 
0

@ sepp2k我认为,在红宝石

)的作品,并在常规 列表这个作品= list.collect({it.trim( ); }

6

你也可以使用扩展操作:

def list = [" foo", "bar ", " groovy "] 
list = list*.trim() 
assert "foo" == list[0] 
assert "bar" == list[1] 
assert "groovy" == list[2] 
1

如果你真的不得不修改到位名单,你可以使用list.eachWithIndex {项目,IDX - >列表[IDX] =项。 trim()}。

collect()更好。