groovy脚本需要找到string1的x位置并将它们放入列表中。最后的输出将是这样的决赛=[[2、3],[5]]
下面的脚本是我创建的,但是它不工作
checkStr='01xx0x1'
i=0
tempaList=[]
finalList=[]
while (i<checkStr.length()){
if(checkStr[i]=='x'){
tempaList.add(i)
}else if(tempaList.length()>1){
finalList.add([tempaList[0],tempaList[-1]])
tempaList=[]
}else if (tempaList.length()==1){
finaList.add([tempaList])
tempaList=[]
}
i=i+1
}
println finaList
我对列表的列表的期望结果有点困惑。如前所述,如果您的唯一目标是查找'x'所在的所有索引,则可以使用:
def str ='01xx0x'
str.findIndexValues { it == 'x' } // result -> [2, 3, 5]
如果你想保持你的分组,你需要确保你处理你的最后一个字符是'x'的情况。您当前的代码将不处理tempaList
有值但循环已经完成对字符串的迭代的实例。
def checkStr = '01xx0x1'
def temp = []
def end = []
for (int i=0; i < checkStr.size(); i++) {
if (checkStr[i] == 'x') {
temp << i
} else if (temp.size()) {
// temp has size (indexes) and we've hit a non-'x' char
end << temp
temp = []
}
}
// If the final char was an x (or multiple x's), handle that here
if (temp) {
end << temp
}
println end // result -> [[2, 3], [5]]
checkStr='01xx0x1'
i=0
tempaList=[]
finalList=[]
while(i<checkStr.length()){
if(checkStr[i]=="x"){
// println i
tempaList.add(i)
}else if (tempaList.size()>1){
finalList.add([tempaList[0],tempaList[-1]])
tempaList=[]
}else if (tempaList.size()==1){
finalList.add(tempaList)
tempaList=[]
}
i=i+1
}
println finalList