Beim Lesen von CSV-Dateien mit der Scanner-Klasse von Java ist es wichtig, Leerzeichen korrekt zu behandeln. Das hier beschriebene Problem, bei dem Text mit Leerzeichen in die nächste Zeile verschoben wird, ergibt sich aus dem Standardverhalten des Scanners.
Erwartetes Verhalten:
CSV-Dateien enthalten häufig Felder mit Leerzeichen, z. B. Adressen. Beim Parsen sollte jedes Feld als einzelne Einheit erfasst werden, auch wenn es Leerzeichen enthält.
Tatsächliches Verhalten:
Standardmäßig verwendet der Scanner Leerzeichen als Trennzeichen. Das bedeutet, dass Leerzeichen als Feldtrennzeichen interpretiert werden. Folglich wird jeder Text mit Leerzeichen in mehrere Felder aufgeteilt und in separaten Zeilen platziert.
Lösung:
Um dieses Problem zu beheben, können Sie die useDelimiter-Methode des Scanners verwenden um ein anderes Trennzeichen anzugeben. Da CSV-Dateien normalerweise Kommas als Feldtrennzeichen verwenden, können Sie den folgenden Code verwenden:
<code class="java">Scanner inputStream = new Scanner(file).useDelimiter(",");</code>
Dadurch wird der Scanner angewiesen, Kommas als Feldtrennzeichen zu behandeln, wodurch die Integrität von Feldern mit Leerzeichen gewahrt bleibt.
Beispiel:
Mit diesem korrigierten Code werden die in der Frage bereitgestellten CSV-Daten wie folgt analysiert:
first,last,email,address 1, address 2 john,smith,[email protected],123 St. Street, Jane,Smith,[email protected],4455 Roger Cir,apt 2
Jedes Feld, auch diejenigen mit Leerzeichen , wird als einzelne Einheit erfasst, was zur gewünschten Ausgabe führt.
Das obige ist der detaillierte Inhalt vonWie gehe ich beim Lesen von CSV-Dateien mit Scanner() in Java richtig mit Leerzeichen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!