1

如果我有这样的列表:

def list = ['a','b','c','d','c']

我想删除第一个c之前的所有项目,如何使用 groovy 轻松做到这一点?

如果存在的话,我正在寻找一个单行答案:)。

4

2 回答 2

3
def list = ['a', 1, 2, 3, 'c', 'b', 'c', 'd', 'c']

assert ['c', 'b', 'c', 'd', 'c'] == list.dropWhile{it != 'c'}
assert ['c', 'b', 'c', 'd', 'c'] == list.drop(list.indexOf('c'))
assert ['c', 'b', 'c', 'd', 'c'] == list[list.indexOf('c')..-1]    
assert ['c', 'b', 'c', 'd', 'c'] == list.subList(list.indexOf('c'), list.size())
assert ['a', 1, 2, 3, 'c', 'b', 'c', 'd', 'c'] == list

主要list始终保留。你每次都会得到一个新的列表。

于 2013-06-27T01:03:28.323 回答
0

我目前的解决方案:

def start = list.findIndexOf { it ==~ /(?i)c/ }
commands = list[start..-1]

我可以把它写成一行,但它不那么可读。

于 2013-06-27T00:52:08.567 回答