String 分配;它";在每次迭代中(groovy)

String 分配;它";在每次迭代中(groovy),string,groovy,immutability,trim,String,Groovy,Immutability,Trim,嘿,我尝试在groovy中修剪列表中的每个字符串项 list.each() { it = it.trim(); } 但这只适用于闭包,列表中的字符串仍然是“foo”、“bar”和“groovy” 如何实现这一点?根据,使用collect将收集闭包返回的值 list = list.collect { it.trim() } 下面是一个使用Groovy Shell的小示例: groovy:000> ["a ", " b"].collect { it.trim() } ===>

嘿,我尝试在groovy中修剪列表中的每个字符串项

list.each() { it = it.trim(); }
但这只适用于闭包,列表中的字符串仍然是“foo”、“bar”和“groovy”

如何实现这一点?

根据,使用
collect
将收集闭包返回的值

list = list.collect { it.trim() }
下面是一个使用Groovy Shell的小示例:

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

@sepp2k我认为这在ruby中是有效的

这在groovy中工作
list=list.collect(){it.trim();}

您还可以使用扩展运算符:

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

如果确实需要修改列表,可以使用list.eachWithIndex{item,idx->list[idx]=item.trim()}


collect()要好得多。

list=list.collect{it.trim()}tyRight,不能用不带参数的方法省去paren。修正了。一个奇妙而整洁的解决方案。非常感谢。意思是我可以这样做:items=ViewDefinition.findallbydinlist(params.id.split(“-”).collect{it as long})