2016-10-11 3 views
2

Ich habe eine Textdatei, die tabulatorgetrennt ist, aber es gibt eine unterschiedliche Anzahl von Spalten in jeder Zeile. Hier ein Beispiel:Wie werden mehrere durch Tabulatoren getrennte Zeilen in Java aufgeteilt, wenn sie alle eine unterschiedliche Anzahl von Spalten haben?

1 :  2 16 17 24 31 34 40 41 45 47 48 
2 :  1 3 4 5 6 7 8 13 18 20 22 28 33 35 37 38 42 44 46 49 
3 :  2 10 12 16 17 19 24 25 29 31 34 40 41 45 

Ich mag die Split-Funktion verwenden, wie ich für eine andere Zuordnung hier tat

String[] words = line.split("\t"); 
col1 = Integer.parseInt(words[0]); 
col2 = Integer.parseInt(words[1]); 
col3 = Integer.parseInt(words[2]); 
col4 = Integer.parseInt(words[3]); 

Dies stellt jede Spalte von einer Leitung in eine andere Variable. Ich möchte dasselbe machen, aber ich bin nicht sicher, wie man das mit einer variierenden Anzahl von Spalten macht.

+5

Das Ergebnis von 'split' gibt Ihnen bereits ein Array aller Spaltenwerte. Warum reicht das nicht aus? – Mureinik

+2

Was ist das eigentliche Problem? Die Aufspaltung scheint gelöst zu sein. Das Problem scheint zu sein, dass Sie versuchen, eine beliebige Anzahl von Werten in eine feste Anzahl von Variablen zu stopfen. Warum musst du das tun? Du hast bereits die Werte. –

Antwort

3

Wie in den Kommentaren gesagt, sind Sie ziemlich gut mit dem, was Sie getan haben. Wenn Sie wirklich Ihre Integer-Werte irgendwie gespeichert haben möchten, können Sie einfach ein Integer-Array verwenden, und füllen Sie ihn mit einer Schleife wie folgt aus:

String[] words = line.split("\t"); 
int[] numbers = new int[words.length]; 
for (int i = 0; i < words.length; i++) 
{ 
    numbers[i] = Integer.parseInt(words[i]); 
} 

Das Ganze innerhalb der Schleife wird Sie Ihre Linien verwenden iterieren.

Ich glaube nicht, dass Sie etwas komplexer als ein Array benötigen.

+1

'Integer.parseInt' gibt ein' int' zurück, warum haben Sie es mit 'Integer' umgebrochen? – Andrew

+1

Dies ist aufgrund der professionellen Deformation, sorry (wir verwenden angepasste Integer in meiner Firma). Primitive int-Array ist in der Tat ausreichend. =) – KC07

+0

'int [] cols = Wörter.mapToInt (Integer :: parseInt) .toArray();' – Andrew

Verwandte Themen