Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe mal wider eine dumme frage, folgende die schleife:
for (String[] s : csvFile)
String[] splitResult = s.split(";");
wieso funktioniert das splitten nicht so?
hallo
in meinem fileReader stehen zeilen von strings drin, die ich aus einem file ausgelesen habe, die liste sieht dann etwa so aus:
List<String[]> csvFile = new ArrayList<String[]>();
was nicht funktioniert ist, ich kann die Methode split mit einem regegx gar nicht aufrufen, sie steht gar nicht zu verfügung.
fehler:
Cannot invoke split(String) on the array type String[] CsvReader.Java
das ich das nicht so machen kann, ist mir jetzt klar, aber wie soll ich das machen?
wenn ich toString darauf aufrufe:
String[] splitResult =s.toString().split(";")
kommt Java lang blablabla raus..
Dein Code-Ausschnitt ist so klein, dass ich da nicht herauslesen kann, was du beabsichtigt. Ich sehe nur, was du tust.
Du versuchst die split Methode auf einem String-Array aufzurufen.
Was erwartest du dir da für ein Ergebnis ?
Ist dein "s" nicht schon das, was du in "splitResult" erhalten möchtest ?
public void readCSV(List<String> forThisStation)
{
for (String f : forThisStation)
{
CSVReader reader = new CSVReader(new FileReader(
"c:/verkehrsmittel/" + stationName + "/" + f));
String[] nextLine;
List<String[]> csvFile = new ArrayList<String[]>();
while ((nextLine = reader.readNext()) != null)
{
csvFile.add(nextLine);
}
//Methoden aufruf, übergabe der Liste csvFile
}
in dieser Methode lese ich ein Verzeichnis mit files ein, speichere diese in einer liste von Array.
der folgende Abschnitt ist das Hauptproblem:
Java:
for (String[] s : csvFile)
{
String[] splitResult =s.toString().split(";");
}
was ich hier genau machen will ist, die zeilen, welche vom csvReader eingelesen worden sind, will ich spliten nach ;.. und das klappt einfach nicht, egal was ich mache, ich sehe die Methode split nicht. in meiner jetzigen schleife rufe ich toString zwar auf, dann funktionierts, allerdings, ist das nicht der wirkiche Inhalt, es kommt irgendwas von Java.lang..
ist es jetzt verständlicher? sorry, wenn ich mich unglücklich artikuliert habe^^..
Nun ja, jetzt wäre es noch interessant zu wissen, was der CSVReader macht. Aber wie Dompteur schon sagte, vermutlich splittet der Reader schon jede Zeile. Du hast ja eine Liste von String-Arrays, nicht eine Liste von Strings. Iteriere doch einfach mal mit zwei verschachtelten Schleifen durch die Liste und dann durch das Array, und gebe den Wert mal jeweils aus. Das sollte vermutlich schon das Ergebnis sein.
Wenn es der CSVReader von opencsv ist, scheint er genau das zu machen. Er liest eine Zeile und gibt sie als String[] zurück, wo jedes Element im Array einem Komma-getrenntem Element entspricht:
Code:
public String[] readNext()
throws IOException
Reads the next line from the buffer and converts to a string array.
Returns:
a string array with each comma-separated element as a separate entry.
Throws:
IOException - if bad things happen during the read