String splitten und weiter einarbeiten in einer Methode?

JonasDev

Mitglied
Hey Leute, Ich hab mal ne Frage.

Unzwar wollte ich mal Fragen wie ihr so welche Aufwendigen Strings splittet. Ich lese eine CSV-Datei und bekomme diesen darunter gezeigten String. Jetzt versuch ich die Sachen einzeln zu adden in meiner Hashmap. Die Hashmap braucht ein gesplitten Datum also nur den Tag und den Monat. Und in Event hab ich ein Konstruktor der den Namen liest.

Ich hoffe ihr könnt mir weiterhelfen, ich hab wirklich kein Plan wie ich das anstellen soll. Ich weiß das ich was mit Schleifen machen muss und vielleicht ein Array aber wonach soll ich bitte abfragen?
Das ist mein Output.

20.05.1955 Kathryn Janeway
15.11.1953 Amal Kotay
22.02.1968 Annika Hansen
22.06.1956 Tuvok Russ
08.02.1955 Neelix Phillips
09.11.1964 Tom Paris
11.09.1958 B'Elanna Torres
25.12.1968 Harry Kim
24.08.1974 Kes Lien
27.10.1953 Robert Picardo
21.02.1961 Samantha Wildman
28.11.1988 Naomi Wildman
17.04.1972 Alexander Vorik
20.04.1978 Manu Intiraymi
21.02.1961 Martha Seska
18.03.1950 Lon Suder
03.04.1978 Peter Durst
28.06.1973 Alice Krige
27.02.1975 Susanna Thompson
24.11.1979 Reginald Barclay
[24.11.1979, Reginald, Barclay]
Java:
public void addGeburtstage(String datum, Event event) {
    this.feiertageMap.put(datum, event);
}

Java:
public void geburtstageFormatieren(String content) {
    String formatierterContent = content.replace(';', ' ');
    System.out.println(formatierterContent);
    String[] s1 = new String[100];
    for (String s : formatierterContent.split("\n")) {
         s1 = s.split(" ");
    }
    System.out.println(Arrays.toString(s1));
    

    //System.out.println(datum);

    //event.addGeburtstage(datum, new Event("Kathryn"));
}

Ich hoffe ihr könnt mir weiterhelfen.

Liebe Grüße
Jonas
 
Du ersetzt in deiner geburtstageFormatieren-Methode zunächst Semikola durch Leerzeichen und machst danach einen split an den Leerzeichen. Das sieht unnötig kompliziert aus.
Wie sieht denn so en typischer content-String aus, den du an deine Methode übergibst?
 
Und warum splittest du dann nicht gleich bei Semikolon ? In den Feldern könnte ja ein Leerzeichen vorkommen, z.B. Vorname = "Hans Dietrich". Dann krigest du beim anschliessenden Splitten bei Blank ein Problem
 
Da du ja ein festes Format hast kannst du einfach String#substring() benutzen.
Wobei ich jetzt mal für die Indexe nicht die Hand ins Feuer lege:

event.addGeburtstage(s.substring(0, 4), new Event(s.substring(12)))
 
Da du ja ein festes Format hast kannst du einfach String#substring() benutzen.
Wobei ich jetzt mal für die Indexe nicht die Hand ins Feuer lege:

event.addGeburtstage(s.substring(0, 4), new Event(s.substring(12)))
aber dieser Substring nimmt doch nur einen bestimmten bereich oder irre ich mich. Weil was ist wenn der User seine Excel Datei bearbeitet und statt 1 Eintrag // 100 Einträge hat
 
Egal was der User macht. Semikolon ist das Trennzeichen der einzelnen Einträge hast du gesagt. Dann solltest du auch beim Semikolon trennen um die einzelnen Felder korrekt zu erhalten.
Soll ich dann eine methode laufen lass nach der Länge des Strings und dann substring wie da oben beschrieben. Ich kann doch nur beim substring einen int index angeben? und keinen char? oder meinst du split? und dann den Array in die Methode add geburtstag ausgeben. Ich probier das gleich aus
 
Java:
public void geburtstageFormatieren(String content) {
 
    for (String s : formatierterContent.split("\n")) {
         event.addGeburtstage(s.substring(0, 4), new Event(s.substring(12)));
    }
 
}
 
Das sieht falsch aus.
Der übergebene Paramer heisst "content", du arbeitest aber mit "formatierterContent".
Und den Tip, am Semikolon zu splitten, hast du ignoriert.
Solange sich am Format der Zeilen nichts ändern, wird es aber trotzdem funktionieren.
 

Zurück
Oben