Java сканер для игнорирования разделителя в csv в случае "" - PullRequest
0 голосов
/ 02 апреля 2020

Я использую сканер для разграничения токенов по ";". Мне нужно, когда строки заключаются в кавычки, что; будет игнорироваться сканером в кавычках "". Также необходимо разделить на "".

             0          1                        2
A   ProjectID Name  Describtion                 Summary
B      ID-322;"oba stb; iba logo ""T"" ";dg-eiiod
C      ID-349;Sttring;dg-enc05
D      ID-888;Data;dg-enc05

Как вы видите в строке "oba stb; iba logo "" T "" "; is my delimiter. I need to make scanner ignore it, now it would split it as" oba stb "iba lo go" "T" "" `который я не хочу.

теперь у меня есть scanner.useDelimiter(";|\t");

1 Ответ

1 голос
/ 02 апреля 2020

Не используйте Scanner для анализа файлов CSV, используйте синтаксический анализатор CSV .

Почти все синтаксические анализаторы на основе Java позволяют использовать разделители, отличные от запятых.

Например, с Apache Commons CSV (просто чтобы выбрать случайный):

CSVFormat format = CSVFormat.RFC4180.withDelimiter(';');
Charset charset = Charset.defaultCharset(); // or StandardCharsets.UTF_8
try (CSVParser parser = CSVParser.parse(file, charset, format)) {
    for (CSVRecord record : parser) {
        String projectID = record.get("ProjectID");
        String name = record.get("Name");
        String description = record.get("Describtion");
        ...
    }
}
...