Как использовать 2 символа в качестве разделителя в CSVreader - PullRequest
0 голосов
/ 03 июля 2019

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

Есть ли простое решение для этого?

CSVReader csvReader = new CSVReader(new InputStreamReader(inputStream), ';', '"', 1);

1 Ответ

1 голос
/ 03 июля 2019

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

Я предлагаю вам перенаправить пользователей на соответствующий RFC 4180 , если они хотят полностью соответствовать стандарту CSV .

Если вам нравится, вы можете добавить для них опцию, чтобы ввести разделитель, который они использовали при загрузке файла (и убедитесь, что вы обрабатываете случаи, когда они неправильно набрали его или умышленно указали неправильный).

Если вам еще приятнее, вы можете прочитать первую строку и попробовать разные часто используемые разделители (<space>, \t, ,, ;, ...) и выбрать тот, который дает вам наибольшее количество токенов.

Всякий раз, когда вы имеете дело с пользовательским вводом, вам придется приложить много усилий (и код) для проверки каждого углового случая.

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