Problem ze spacją w parsowaniu piku CSV używając Scannera

Odpowiedz Nowy wątek
2019-07-18 16:49

Rejestracja: 1 rok temu

Ostatnio: 21 godzin temu

0

Cześć
Odczytuje dane z pliku CSV używająć Scannera ale w przypadku gdy mam tabeli wyrazy oddzielone spacją to odczytuje mi to jako nową linie. Próbowałem użyć useDelimiter ale wtedy szczytuje mi w pętli tylko pierwszy wiersz

 try {
            Scanner inputStream = new Scanner(new File("name.csv"));
            inputStream.useDelimiter(COMMA_DELIMITER);
            inputStream.nextLine();

            while(inputStream.hasNext()){

                 String data = inputStream.next();

                 String[] values =  data.split(",");

Pozostało 580 znaków

2019-07-18 16:53
Moderator

Rejestracja: 16 lat temu

Ostatnio: 5 godzin temu

szczytuje mi w pętli

Erotic asphyxiation ? :D

No i to chyba bez sensu trochę skoro ustawiasz , jako delimiter a potem jeszcze splitujesz po przecinku. Możesz pokazać przykład jak te twoje dane wyglądają? Bo trochę sie to nie trzyma kupy.

List<String> result = new Scanner("ala ma kota,sierotka ma rysia,co ci przeszkadza spacja?")
    .useDelimiter(",")
    .tokens()
    .collect(Collectors.toList());

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2019-07-18 16:55
hhehe:) Co do useDelimiter mam ustawione na " ". Domyślam się że mam coś zrobione bez senu bo mi to nie działa :( - Lucekzz 2019-07-18 17:01
No to w ogólę cię nie rozumie. Skoro dałes spacje to czemu się dziwisz ze tokenizuje po spacji? o_O - Shalom 2019-07-18 17:04
Znalazłem bład String data = inputStream.next() zamieniłem na String data = inputStream.nextLine(); i delimiter nie jest potrzebny - Lucekzz 2019-07-18 17:59

Pozostało 580 znaków

V-2
2019-07-18 22:00
V-2

Rejestracja: 3 lata temu

Ostatnio: 6 godzin temu

1

Ogólnie rzecz biorąc do parsowania CSV lepiej byłoby użyć jakiejś biblioteki. Przerabiałem to lata temu w .NET. Ten format nie jest wcale taki prosty, jak się wydaje - wspiera znaki ucieczkowe, są rozmaite przypadki brzegowe. Naiwne splitowanie po przecinku to jest proszenie się o kopoty.


Nie ma najmniejszego powodu, aby w CV pisać "email" przed swoim adresem mailowym, "imię i nazwisko" przed imieniem i nazwiskiem" ani "zdjęcie mojej głowy od przedniej strony" obok ewentualnego zdjęcia.

Pozostało 580 znaków

2019-07-19 10:58

Rejestracja: 5 lat temu

Ostatnio: 6 godzin temu

Lokalizacja: Warszawa

1

Ja jeszcze proponuje nie używac scannera i klasy File tylko wykorzystać Files.lines(Path path)
Path > File


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0