/ / wiele sekcji w wierszu csv - java, csv

wiele sekcji w wierszu csv - java, csv

Mam sformatowany plik CSV

<F,Bird,20,10/> < A,Fish,5,11,2/>

Zastanawiałem się, jak czytać te wartości osobno.

Czy musiałbym wprowadzić całą linię do tablicy?

Myślałem o tym line.split("/>") ale wtedy pierwsze dane by miały < w tych, których nie chcę.

Jeśli z drugiej strony po prostu go oddzielam line.split(",") a następnie przypisz każdemu z nich odpowiednio wartości w środku, które się łączą, więc to też nie działa.

Czy istnieje sposób, aby oddzielić ciąg pierwszy bez <>/ symbolika?

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz użyć kilku ograniczników w podzielonym wyrażeniu regularnym, jak poniżej:

String line = "<F,Bird,20,10/> < A,Fish,5,11,2/>";
String[] lines = line.split("<|/> <|/>");
for (String item: lines) {
System.out.println(item);
}

Wyjście (ze wszystkimi swoimi spacjami):

F,Bird,20,10
A,Fish,5,11,2

0 dla odpowiedzi nr 2

Spróbuj podzielić swój łańcuch wejściowy za pomocą lookbehind ?<=/>:

String input = "<F,Bird,20,10/> < A,Fish,5,11,2/>";
input = input.replaceAll("\s+", "");
String[] parts = input.split("(?<=/>)");
for (String part : parts) {
System.out.println(part.replaceAll("[<>/]", ""));
}

Zwróć uwagę, że usunąłem wszystkie spacje ze swojego ciąguaby podział był czystszy. Nadal moglibyśmy spróbować podzielić się dowolnymi białymi znakami, ale byłoby to więcej pracy. Od tego momentu możesz łatwo uzyskać dostęp do danych CSV zawartych w każdym tagu.

Wydajność:

F,Bird,20,10
A,Fish,5,11,2

Demo tutaj: