W moim przypadku prawidłowy plik CSV jest rozdzielany przecinkiem lub średnikiem. Jestem otwarty na inne biblioteki, ale musi to być Java. Czytając API Apache CSVParser, jedyne co mogę zrobić, to zrobić to, co wydaje się nieefektywne i brzydkie.Jak przeanalizować plik CSV, który może mieć jeden z dwóch ograniczników?
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
CSVFormat csvFormat = CSVFormat.EXCEL.withHeader().withDelimiter(';');
CSVParser parser = csvFormat.parse(reader);
// now read the records
}
catch (IOException eee)
{
try
{
// try the other valid delimeter
csvFormat = CSVFormat.EXCEL.withHeader().withDelimiter(',');
parser = csvFormat.parse(reader);
// now read the records
}
catch (IOException eee)
{
// then its really not a valid CSV file
}
}
Czy istnieje sposób, aby najpierw sprawdzić ogranicznik, a może pozwolić na dwa ograniczniki? Ktoś ma lepszy pomysł niż tylko wyłapanie wyjątku?
myślę kody są najlepsze. Brak metody wykrywania separatora w normalnym pliku CSV. Jedynym sposobem na wykrycie separatora jest ponawianie próby z kilkoma ogranicznikami. – gilchris
Pomyślnie, jeśli dobrze uformowałeś csv, mógłbyś dopasować wzór do jednej z twoich opcji? Jeśli każde pole jest zawijane w cudzysłów, a następnie oddzielone przecinkami, możesz znaleźć kilka przykładów wzorca "," –