Splitt() Help

Tis

Mitglied
Moin :D,

Folgendes problem:
Klassen

Methoden

Ich habe eine Klasse erstellt namens ReadFromFile die eine Methode lesen() enthält. Diese Methode lesen() erhält den pfad eine Textdatei und :
- Liest sie zeilenweise ein
- Speichert die zeilen in ein ArrayList

Jetzt will ich dass diese Methode die Textdateien Splittet und zwar immer bei ",".


Diese Klasse ist ein teil von mehreren und dient als kleine aufgabe in mein Praktikum, wäre ich also sehr dankbar wenn ihr mir helfen könnt.

Java:
import java.io.*;
import java.util.ArrayList;

public class ReadFromFile{
 public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{


 String line = "";
     ArrayList<String> listA = new ArrayList<String>();

     
     try {
    	 		
     	 		File file = new File(dateiname);
         		FileReader fr = new FileReader(file);
         //BufferedReader erstellen und mit FileReader verknüpfen
                BufferedReader br = new BufferedReader(fr);
                     	
                     
         //Solange zeilen zum ArrayList adden bis ende
                 for(int i = 0;(line = br.readLine())!=null ;i++){
                	 
        
           //Hier soll die Splitt() Methode implimentiert werden nur das ****t schonmal nicht
           //           
           //    	 listA.add(line.Splitt("//,");
                	 System.out.println(listA.get(i));
                 
        }
              
         //Fehlermeldung falls Datei nicht vorhanden
     			 }catch (FileNotFoundException e) {
     			 System.out.println("File not found");
}
  } usw..
 
Zuletzt bearbeitet:
Hallo,

du willst also quasi die Datei auslesen und anstatt an dem Zeilenumbruch an dem Kommata getrennt zurückgeben?

Die einfachste Methode wäre, die ArrayList aus String[] bestehen zu lassen, das wären nur vier weitere Zeichen bei dir:
Java:
ArrayList<String[]> listA = new ArrayList<String[]>();

Somit wäre jedes Element in deiner ArrayList ein String[], welches die Teile an Hand der Kommata getrennt enthält.

Gruß
BK
 
  • Gefällt mir
Reaktionen: Tis
Hallo ,

Es ist so das Diese Textdateien informationen erhalten und zb so aussehen:
Code:
ChangeFormType,Formtyp ändern
Loading,Laden
Show,Anzeigen
Hide,Verstecken
NoClassification,Keine Klassifikationen
Missing,Fehlend

Diese information muss ich spaltenweise in Excel speichern , ich schaffe es ein Text momentan in excel zu speichern nur muss halt den Text bei "," trennen damit ich es zelle a bzw b zuweisen kann
Also muss da ein Splitter hin oder nicht?

Gruß
 
Zuletzt bearbeitet:
Hallo,

so wie ich es oben geschrieben habe sollte es funktionieren.
Mit dem Code sieht die ArrayList dann in etwa so aus:
Code:
[0] => {
  [0] = "ChangeFormType",
  [1] = "Formtyp ändern"
},
[1] => {
  [0] = "Loading",
  [1] = "Laden"
}

Das heißt:

listA.get(0)[0] = "ChangeFormType"
listA.get(0)[1] = "Formtyp ändern"
listA.get(1)[0] = "Loading"
listA.get(1)[1] = "Laden"

Diese Struktur spiegelt die für Excel benötigte Form ziemlich exakt wieder.

Gruß
BK
 
Hallo,

Danke dir bratkartoffel obwohl ich so ein bisschien hunger habe wegen dein Namen ;D

ich gucks mir nochmal an , aber dir ist schon klar dass das ganze automatisch ablaufen soll und nicht per hand
also mit den bufferedreader etc


Ich weiss jetzt nicht genau wie ich die lines vom bufferedreader zum array adden soll
Gruß
 
Zuletzt bearbeitet:
Hallo,

du hast es ja eh schon mehr oder weniger im Code stehen, nur auskommentiert:
Java:
           // Hier soll die Splitt() Methode implimentiert werden nur das ****t schonmal nich
           listA.add(line.split(",");

Details zur Methode "split()": In der Java-API

Gruß
BK
 
Hallo,

es ist echt zum .. Was funktioniert hier nur nicht****
ich will einfach nur bei komma splitten, so das der text nicht nur bei zeilenumbruch sondern auch bei "," ein eigenen index im arraylist hat
Java:
     try {
                
                File file = new File(dateiname);
                FileReader fr = new FileReader(file);
         //BufferedReader erstellen und mit FileReader verknüpfen
                BufferedReader br = new BufferedReader(fr);
                        
                     
         //Solange zeilen zum ArrayList adden bis ende
                 for(int i = 0;(line = br.readLine())!=null ;i++){
                     
        
       
        //  WAS IST HIER BEI SPLITT NUR FALSCH? er zeigt die kommas immer noch im text
                     listA.add(line.Splitt("//,");
                     System.out.println(listA.get(i));
                 
        }
              
         //Fehlermeldung falls Datei nicht vorhanden
                 }catch (FileNotFoundException e) {
                 System.out.println("File not found");
}

Gruß
 
Hallo,

nur die Ruhe, beim Programmieren braucht man viel Geduld ;)

Wusse nicht, dass du nur ein eindimensionales ArrayList haben wolltest, folgendes sollte funktionieren (ist aber ungetestet; hab hier grad kein Java zur Hand)
Java:
ArrayList<String> elemente = new ArrayList<String>();

try {
  File file = new File(dateiname);
  FileReader fr = new FileReader(file);

   // BufferedReader erstellen und mit FileReader verknüpfen
  BufferedReader br = new BufferedReader(fr);

  // Erst einmal die Datei zeilenweise auslesen.
  // Die jeweils aktuelle Zeile wird in "zeile" gespeichert.
  String zeile = null;
  while((zeile = br.readLine()) != null) {
    // Die Zeile in die einzelnen Felder aufteilen.
    // In "spalten" stehen alle Felder der Zeile, getrennt an Hand eines Kommatas
    String[] spalten = zeile.split(",");

    // Hier werden alle Felder der aktuellen Zeile durchgelaufen und
    // in der List gespeichert.
    for(String aktSpalte : spalten) {
      elemente.add(aktSpalte);
    } // Ende Felder in Liste speichern
  } // Ende zeilenweise Lesen
} catch (IOException e) {
  e.printStackTrace();
} // Ende catch-Block für Datei einlesen

/*
Hier hast du in "elemente" nun alle Felder der Datei stehen
und kannst damit weiterarbeiten
*/


// Edit:
Java:
Split("\\,")  // nur ein 't' und Backslashes !
Das "Split" gehört kleingeschrieben und die Backslashes komplett raus. Komma hat bei einem RegEx keine weitere Bedeutung und wird als normales Zeichen angenommen. ;)
=> split(",");

Gruß
BK
 
Zuletzt bearbeitet:
Zurück