JAVA String schnell parsen

mw-tw

Mitglied
Hallo,

folgende Ausgangslage: ich habe einen JAVA String, der relativ lang ist und genau folgendermaßen aussieht:
Code:
infos   bla
    name = alfred
    data1 = info 1
    data2 = hihii
    data2 = hihiidsf
    data2 = hihiisdf
    data2 = cddd
    data2 = cfds
    data2 = cfffff
    data3 = test1
    data3 = test2
    data3 = test3
    data3 = test4
    data3 = test5
    data3 = test6

nun möchte ich gerne die dain enthalten Infos jeweils als Array parsen. Heißt:

String name[] =
String data1[] =
String data2[] =
String data3[] =


Wie kann ich dies am schnellsten/optimalsten machen?
 
X

Xyz1

Gast
@karl123 : So:
Java:
import java.util.*;
import java.util.regex.*;

/**
* @author DW on 2016/09/07
*/
public class JavaApplication5 {

    static String[] name = new String[1];
    static String[] data1 = new String[1];
    static String[] data2 = new String[6];
    static String[] data3 = new String[6];

    /**
     * Calcs some things ....
     *
     * @param args images a, b, and c.
     * @throws java.io.IOException
     */
    public static void main(String[] args) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        String text
                = "infos   bla\n"
                + "    name = alfred\n"
                + "    data1 = info 1\n"
                + "    data2 = hihii\n"
                + "    data2 = hihiidsf\n"
                + "    data2 = hihiisdf\n"
                + "    data2 = cddd\n"
                + "    data2 = cfds\n"
                + "    data2 = cfffff\n"
                + "    data3 = test1\n"
                + "    data3 = test2\n"
                + "    data3 = test3\n"
                + "    data3 = test4\n"
                + "    data3 = test5\n"
                + "    data3 = test6";
        Pattern p = Pattern.compile("(.+) = (.+)");
        Matcher m = p.matcher(text);
        while (m.find()) {
            add(m.group(1).trim(), m.group(2).trim());
        }
        System.out.println(Arrays.toString(name));
        System.out.println(Arrays.toString(data1));
        System.out.println(Arrays.toString(data2));
        System.out.println(Arrays.toString(data3));
    }

    private static void add(String s1, String s2) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        add1((String[]) JavaApplication5.class.getDeclaredField(s1).get(null), s2);
    }

    private static void add1(String[] array, String s2) {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == null) {
                array[i] = s2;
                return;
            }
        }
    }
}

Code:
run:
[alfred]
[info 1]
[hihii, hihiidsf, hihiisdf, cddd, cfds, cfffff]
[test1, test2, test3, test4, test5, test6]
BUILD SUCCESSFUL (total time: 0 seconds)

0 bis 1 Sek. bei mir nicht zu langsam. :D
 
X

Xyz1

Gast
Meine seltsamen Kommentare gehören da nicht hin (ich kopiere die immer mit), statische Arrays sollten eigentlich nicht default sichtbar sein, die Länge von Arrays ist fix, der RegEx quantifier darf auch zögerlich sein, ja nachdem wie text gestaltet. ;)
 

mw-tw

Mitglied
Besten Dank für deine/eure Hilfe, nun bin ich fast am Ziel angelangt.

Es ist nun so, dass sich der Text/String folgendermaßen erweitert:

Code:
infos   alfred
    name = alfred
    data1 = info 1
    data2 = hihii
    data2 = hihiidsf
    data2 = hihiisdf
    data2 = cddd
    data2 = cfds
    data2 = cfffff
    data3 = test1
    data3 = test2
    data3 = test3
    data3 = test4
    data3 = test5
    data3 = test6
infos   manfred
    name = manfred
    data2 = hhg
    data2 = kiki
    data3 = test1
infos   karin
    name = karin
    data2 = fee
    data2 = nee
    data3 = ggg
    data3 = qqq


Letzendlich möchte ich die Daten im nachhinein folgendermaßen weiterverarbeiten:

alfred
- name[] = ...
- data1[] = ...
- data2[] = ...
- data3[] = ...
manfred
- name[] = ...
- data1[] = ...
- data3[] = ...
karin
- name[] = ...
- data1[] = ...
- data2[] = ...
- data3[] = ...

Die Anzahl der Datensätze pro Person varriieren also. Ebenso kanne s sein, dass z.B. data2 bei einer Person nicht da ist.

Entsprechend sollte ich wahrscheinlich mit Listen arbeiten. Habt ihr einen Ansatz, wie ich die oben beschriebene Situation angehen kann?
 

Joose

Top Contributor
Kann es auch "data4" usw. geben?
Ansonsten würde ich auf eine Klasse "PersonData" setzen welche eben drei Listen als Attribute hat. Die Objekte dieser Klasse kommen in eine Map (Key = Name der Person, Value = Objekt)
 
X

Xyz1

Gast
Viel werde mir jetzt den Kopf abreißen, aber:
Java:
List<List<List<String>>> allePersonen = new ....;

allePersonen.get(0).get(0).add("Alfred"); // usw. usf.

Können wir das? JAAA. :D Machen wir es für dich? Weiß nicht.
 

Thallius

Top Contributor
also wenn es irgendwie geht würde ich die Quelle der Liste ändern. Denn so eine einfach formatierte textliste zu parsen ist immer schrott. Sieh zu, dass du sie als XML oder zumindest als CSV oder Excel bekommst.
 

stg

Top Contributor
Wie wäre es, wenn du dir zunächst einmal selbst Gedanken machst und dich dann mit konkreten Problemen meldest, anstatt für jede kleine Änderung an den Anforderungen erneut auf eine fertige Implementierung der Lösungszaubermaschine zu warten?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
I String Expression mit Java validieren (true / false) Java Basics - Anfänger-Themen 34
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
Z Methode zum Heraufinden von Anagrammen ohne Java API, Ausnahme String Java Basics - Anfänger-Themen 14
C Java String Methode Java Basics - Anfänger-Themen 6
H java string aufgabe Java Basics - Anfänger-Themen 10
S Java String[]args Übergabeparameter Java Basics - Anfänger-Themen 2
B Collections Java Wörter in String zählen und geordnet ausgeben Java Basics - Anfänger-Themen 10
F Methoden Java String aufteilen Java Basics - Anfänger-Themen 17
E Datentypen C# String zu Java String konvertieren Java Basics - Anfänger-Themen 3
L Java CMD Console in String umwandeln? Java Basics - Anfänger-Themen 2
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
L Java String to date? Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
R Input/Output Java String abfragen Java Basics - Anfänger-Themen 3
J Klassen java.lang.String - lexikographisches Sortieren Java Basics - Anfänger-Themen 5
B Erste Schritte Java IDE schreibt "(String[] args)" Java Basics - Anfänger-Themen 5
M Compiler-Fehler Fehler Meldung java.lang.NumberFormatException: empty String Java Basics - Anfänger-Themen 2
S String index out of range: 8 at java.lang.String.substring(Unknown Source) Java Basics - Anfänger-Themen 13
Spin Java parse String to int Java Basics - Anfänger-Themen 2
M Java String " einfügen Problem Java Basics - Anfänger-Themen 2
Y Java Programm URL und String Vergleich! Java Basics - Anfänger-Themen 4
S expected java.lang.string but found char Java Basics - Anfänger-Themen 5
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
E JAVA Typ Short mit String ergänzen Java Basics - Anfänger-Themen 6
I java.lang.String cannot be cast to OBJEKT Java Basics - Anfänger-Themen 8
Developer_X Java String Spielereien Java Basics - Anfänger-Themen 18
K Fehler Meldung java.lang.NumberFormatException: empty String Java Basics - Anfänger-Themen 1
K Java String UNICODE in DB UTF-8 Feld einfügen Java Basics - Anfänger-Themen 3
T [SOLVED] Java String equals funktioniert nicht Java Basics - Anfänger-Themen 5
A Anfängerfrage - array required, but java.lang.String found Java Basics - Anfänger-Themen 7
B Java-Frame Taschenrechner - String -> Int und umgekehrt Java Basics - Anfänger-Themen 8
G string trennen in java 1.3 Java Basics - Anfänger-Themen 7
S java.io.* BufferedReader to String Java Basics - Anfänger-Themen 12
G String in java.sql.Date umwandeln Java Basics - Anfänger-Themen 4
S String für das java jre home verzeichnis Java Basics - Anfänger-Themen 3
J Java Aufgabe -> String einlesen, splitten,Substring & Java Basics - Anfänger-Themen 3
K Prob mit java.util.regex.matches-String wird nicht erkannt? Java Basics - Anfänger-Themen 9
S java.lang.String Fehler bei DB Abfrage Java Basics - Anfänger-Themen 4
W HTML in Java als String Java Basics - Anfänger-Themen 6
R Java 5.0 / String.format - Warning Java Basics - Anfänger-Themen 8
M.C.S. String parsen in Java Java Basics - Anfänger-Themen 5
Z Fehlermeldung: Exception. java.lang.String Java Basics - Anfänger-Themen 7
T Substrings in Strings ersetzen ohne java.lang.String Java Basics - Anfänger-Themen 8
M JTable getValueAt -- CastClassException : java.lang.String Java Basics - Anfänger-Themen 5
M String als Java-Code ausführen Java Basics - Anfänger-Themen 4
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben