如果我有这样的清单:
def list = ['a','b','c','d','c']
我希望在第一个 c 之前删除所有项目,如何使用groovy轻松完成此操作?
如果存在,我正在寻找一行答案:)。
答案 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]
我可以把它变成一行,但它不是那么可读。