在匹配的项目groovy之前删除列表中的项目

时间:2013-06-27 00:29:52

标签: list groovy

如果我有这样的清单:

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

我希望在第一个 c 之前删除所有项目,如何使用groovy轻松完成此操作?

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

2 个答案:

答案 0 :(得分: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。每次都会得到一个新列表。

答案 1 :(得分:0)

我目前的解决方案:

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

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