Groovy脚本问题:查找字符串中x的位置并按规则存入列表
Groovy脚本修正:提取字符串中连续'x'的位置
你的脚本存在几处问题导致无法正常运行,以下是问题点和修正后的代码:
原脚本的问题
- 变量名拼写错误:多处把
finalList写成了finaList,导致变量未定义报错 - 列表长度判断错误:Groovy中列表的长度要用
size()方法,length()是字符串专属的方法 - 单个x的存储格式不对:原代码
[tempaList]会生成嵌套列表(比如[[5]]),但需求是[5]这种单元素列表 - 循环结束后漏处理剩余的x:如果字符串末尾是'x',循环结束后临时列表里的内容不会被加入最终列表
修正后的脚本
checkStr='01xx0x1' i=0 tempaList=[] finalList=[] while (i < checkStr.length()){ if(checkStr[i] == 'x'){ tempaList.add(i) }else{ // 遇到非x字符时,处理临时列表里的x位置 if(tempaList.size() > 1){ finalList.add([tempaList[0], tempaList[-1]]) }else if(tempaList.size() == 1){ finalList.add([tempaList[0]]) } tempaList=[] } i += 1 } // 处理循环结束后剩下的x(比如字符串末尾是x的情况) if(tempaList.size() > 0){ if(tempaList.size() > 1){ finalList.add([tempaList[0], tempaList[-1]]) }else{ finalList.add([tempaList[0]]) } } println "finalList=${finalList}"
运行这段代码会输出:finalList=[[2, 3], [5]],完全符合需求。
内容的提问来源于stack exchange,提问作者liuxu
相关产品推荐
相关产品推荐

