Groovy сплит без окончательной отделки - PullRequest
6 голосов
/ 09 марта 2011

Я анализирую файл CVS, как показано ниже:

"07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,,
"07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,jane@doe.com

Дело в том, что при использовании скрипта, подобного этому:

file.eachLine{ line ->

    items = line.split(",")
    println items.length
}

Результат выглядит примерно так:

16
18

Что заставляет меня задуматься о том, что функция split удаляет окончательные значения.Мне нужны все предметы, даже если они пусты.Есть идеи?

1 Ответ

4 голосов
/ 09 марта 2011

Я думаю, что вы хотите сделать:

items = line.split(',', -1)

чтобы убедиться, что вы получите все токены

(согласно Javadoc ):

Параметр limit контролирует количество раз, когда шаблон применяется и, следовательно, влияет на длину результирующий массив. Если предел n больше нуля, то шаблон будет применяться не более n - 1 раз, длина массива не будет больше чем n, и последняя запись массива будет содержать все входные данные за пределами последнего согласованный разделитель. Если n не положительный, то картина будет применяется столько раз, сколько возможно и массив может иметь любую длину . Если п ноль, то шаблон будет применен столько раз, сколько возможно, массив может иметь любую длину и конечный пустые строки будут отброшены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...