我正在逐一解析列表中的每个元素。
def List1 = (String[]) Data[2].split(',')
此列表的一部分为我提供了一个列表,其中包含包含定界符!
的元素。
List1 = [TEST1!01.01.01, TEST2!02.02.02]
我尝试遍历此列表的每个元素,并获得一个用逗号分隔的列表。
def List2 = []
List1.each { List2.add(it.split('!'))}
但是,结果是一个列表列表。
[[TEST1, 01.01.01], [TEST2, 02.02.02]]
代替[TEST1, 01.01.01, TEST2, 02.02.02]
。
如何避免这种情况并获得如上所示的列表?
答案 0 :(得分:2)
怎么样?
def list1 = ['TEST1!01.01.01', 'TEST2!02.02.02']
println list1.collect{it.split('!')}.flatten()
答案 1 :(得分:1)
当您执行List2.add(it.split('!'))
时,您是将列表而不是单个字符串添加到List2
中,因为.split()
从字符串中创建了一个列表。
首先应使用.split()
创建列表,然后将列表的每个成员添加到List2
。
这是解决方法:
def List1 = ["TEST1!01.01.01", "TEST2!02.02.02"]
def List2 = []
List1.each { List1member ->
def subList = List1member.split('!')
subList.each { subListMember ->
List2.add(subListMember)
}
}
println(List2)
答案 2 :(得分:0)
split()
返回一个列表。这就是为什么我得到列表列表的原因。我发现split()
在与运算符一起应用时也可以处理多个定界符。
以下返回所需的输出。
def List1 = (String[]) Data[2].split(',|!')