2009-09-22 30 views
11

Này, tôi cố gắng để cắt từng hạng mục chuỗi của một danh sách trong groovyassign "nó" trong mỗi lần lặp (groovy)

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

Nhưng này chỉ hoạt động trong việc đóng cửa, trong danh sách các chuỗi vẫn còn " foo "," bar "và" groovy ".

Làm cách nào để đạt được điều đó?

Trả lời

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

danh sách = list.collect {it.trim()} ty – codevour

+0

Phải, không thể bỏ qua các lần truy cập bằng các phương pháp không có tham số. Đã sửa. – sepp2k

+2

Một giải pháp tuyệt vời và ngăn nắp. Được đánh giá cao. Có nghĩa là tôi có thể làm một cái gì đó như thế này: items = ViewDefinition.findAllByIdInList (params.id.split ("-"). Thu thập {it as long}) –

2

Theo Groovy Quick Start, sử dụng collect sẽ thu thập các giá trị trở về từ việc đóng cửa.

Dưới đây là một ví dụ nhỏ bằng cách sử dụng Groovy Shell:

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

@ sepp2k tôi nghĩ rằng tác phẩm trong ruby ​​

và các công trình này trong danh sách groovy = list.collect() {it.trim (); }

6

Bạn cũng có thể sử dụng toán tử lây lan:

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

Nếu bạn thực sự đã phải sửa đổi danh sách tại chỗ, bạn có thể sử dụng list.eachWithIndex {mục, idx -> danh sách [idx] = item. trim()}.

collect() là cách tốt hơn.

Các vấn đề liên quan