Лучше использовать готовую библиотеку. Но у тебя наверняка есть свои причины.
Вот альтернативное решение для вас. Он разделяет строки запятыми и собирает части, которые изначально принадлежали друг другу (см. Multipart).
def content =
"""COL1,COL2,COL3,COL4
3920,10163, "ST. PAUL, MN" ,TWIN CITIES
3920,10163, " ST. PAUL, MN " ,TWIN CITIES, ,"Bla,Bla, Bla" """
content.eachLine {line ->
def multiPart
for (part in line.split(/,/)) {
if (!part.trim()) continue // for empty parts
if (part =~ /^\s*\"/) { // beginning of a multipart
multiPart = part
continue
} else if (part =~ /"\s*$/) { // end of the multipart
multiPart += "," + part
println multiPart.replaceAll(/"/, "").trim()
multiPart = null
continue
}
if (multiPart) {
multiPart += "," + part
} else {
println part.trim()
}
}
}
Вывод (Вы можете скопировать код прямо в GroovyConsole для запуска.
COL1
COL2
COL3
COL4
3920
10163
ST. PAUL, MN
TWIN CITIES
3920
10163
ST. PAUL, MN
TWIN CITIES
Bla,Bla, Bla