Table Objekt in einen String convertieren

Hallo,
ich möchte gerne einen Table Objekt in einen String convertieren ich habe zwar ein Einsatz aber ich glaube es gibt noch viel elegantere Lösungen als die und würde mich über Tipps freuen.
Es soll ein String rauskommen der so aussieht:

name;stadt;strasse <-Spalten
hans,luene,bleckede <- Zeilen

Hier wir die Tabelle zusammengebaut:

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		CSVConverter csv = new CSVConverter();
		String columnNames[] = {"name", "stadt", "strasse"};
		Table t = new Table(columnNames);
		String rowValues[] = {"hans", "Luene", "Bleckede"};
		t.addRowValues(rowValues);
		System.out.println(csv.tableToString(t));

	}

}

Und hier ist die Converter Klasse:

public class CSVConverter extends TableConvert {
	
	StringBuilder csvString;
	String leererString = "";
	ArrayList<String[]> rowArrayList;

	public CSVConverter() {
		super();
		csvString = new StringBuilder(leererString);
		
	}

	@Override
	public String tableToString(Table table) {

		String[] columnData= table.getColumns();
		
		for(int i =0; i<columnData.length; i++) {
			csvString.append(columnData**);
			if(columnData.length-1>i)
			csvString.append(";");
			else csvString.append("
");
		}
		
		for(String[] s :  rowArrayList) {
			csvString.append(s);
		}
		
		return csvString.toString();
	}

	@Override
	public String stringToTable(String rawdata) {
		// TODO Auto-generated method stub
		return null;
	}

	
}

String sieht so aus, noch nicht ganz richtig:
name;stadt;strasse
[Ljava.lang.String;@2a9931f5[Ljava.lang.String;@2f9ee1ac

Gruß JavaFan

Für eine korrekte Ausgabe musst du über das String-Array “s” iterieren. Die Variable csvString würde ich lokal in der Methode tableToString anlegen.

okay die Methode TableToString funktioniert schonmal nun ist die nächste Methode an der Reihe. Diese soll einen String:

"name;stadt;strasse

hans;huene;bleckede

peter;hamburg;sauer"

zerlegen und die oberste Zeile soll dann jeweils einzeln dem Tabelenobjekt als Spalte hinzugefügt werden alle Zeilen die dann darunter kommen sollen in Zellen geteielt werden. Habe zwar ein Ansatz, String wird aber nicht so geteielt wie er sollte, würde mich über Tipps freuen.

public Table stringToTable(String rawdata) {
		
		boolean columnEnds = false;
		String columns[] = null;
		String rowValues[];
		
		 for(int i=0; i<rawdata.length(); i++)
	        {
	           if(rawdata.charAt(i) == '
' ||rawdata.charAt(i) == '\r') {
	        	columnEnds = true;
	        	break;
	           }
	        	
	           if(!columnEnds) {
	           columns =  rawdata.split(";");  
	           }
	        }
		 
		 rowValues = rawdata.split(";");
		 Table t = new Table(columns);
		 t.addRowValues(rowValues);
	     		
		return t;
	}

Gruß JavaFan

So könnte es gehen:


String[] rows = rawData.split("
");
if(rows != null && rows.length > 0) {
    // erste Zeile = Überschriften
    Table t = new Table(rows[0].split(";"));

    for(int i = 1; i < rows.length; i++) {
  	String[] columns = rows**.split(";");
        table.addRowValues(columns);
    }
}

Danke! Hat super funktioniert! :slight_smile: