如果我有这样的列表:
def list = ['a','b','c','d','c']
我想删除第一个c之前的所有项目,如何使用 groovy 轻松做到这一点?
如果存在的话,我正在寻找一个单行答案:)。
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
始终保留。你每次都会得到一个新的列表。
我目前的解决方案:
def start = list.findIndexOf { it ==~ /(?i)c/ }
commands = list[start..-1]
我可以把它写成一行,但它不那么可读。