String nach erstem Leerzeichen trennen

Hallo,

ich würde gerne einen String nach dem ersten Leerzeichen trennen, sodass ich immer zwei Wörter habe.
Anwendungsfall ist ein Name:
"Markus Mayer"
Ich benötige nun "Markus" und "Mayer".
Markus möchte ich dann in meine Variable "surname" speichern, "Mayer" in meine Variable "lastname".

Über split und dann split[0] und split[1] ist das kein Problem.
Was ist aber wenn ich einen Namen habe, "Markus Andreas Mayer"
-> Hier möchte ich dann "Markus Andreas" als Vorname haben und "Mayer" als Nachname

Wie mache ich das hier?
 
Nach dem zweiten leerzeichen trennen.

Wenn dein Ziel aber ist Vorname und Nachname korrekt zu trennen, wird das alles andere als einfach (eigtl fast unmöglich)
 
Nach dem zweiten leerzeichen trennen.

Wenn dein Ziel aber ist Vorname und Nachname korrekt zu trennen, wird das alles andere als einfach (eigtl fast unmöglich)
Also wenn es wirklich nur für einen Vor und Nachnamen splitten soll, dann splitte wie @thecain gesagt hat doch einfach am Leerzeichen, ungefähr so:

Java:
String s = "Markus Mayer";
String[] parts = s.split("\\s");
System.out.println(parts[0]);
System.out.println(parts[1]);;
Oder möchtest du, wenn du z.B. Vorname, Zweitname und Nachname hast den Vor und Zweitnamen zusammen und den Nachnamen getrennt?
 
Oder möchtest du, wenn du z.B. Vorname, Zweitname und Nachname hast den Vor und Zweitnamen zusammen und den Nachnamen getrennt?
Ja, so möchte ich es
Ich habe nur zwei Felder in meinem CustomObject (surname und lastname).
Dass das ganze nicht immer 100% klappt, ist mir klar. Ann Kathrin Mayer, Kathrin Müller Mayer etc.

Wie kann ich das machen?
 
Habe es jetzt mal so gelöst, ich bekomme das gewünschte Ergebnis - habe ich aber etwa einen möglichen Fehler nicht bedacht?

Java:
// Name aufsplitten
            String name = toAddress.getPersonal();
            String[] split = name.split(" ");

            if (split != null) {
                if (split[0] != null) {
                    e.setFromSurname(split[0]);
                }
                if (split.length == 2) {
                    e.setFromLastname(split[1]);
                }

                if (split.length > 2) {
                    String helperString = "";
                    for (int k = 1; k <= split.length - 1; k++) {
                        helperString += split[k];
                    }
                    e.setFromLastname(helperString);
                }
            }
 
split[0] wird niemals null sein, der Test kann entfallen. Außerdem bedeuten die Begriffe "surname" und "last name" dasselbe, nämlich "Nachname".
Desweiteren baust du den finalen Nachnamen aus mehreren Nachnamen im helperString so zusammen, dass die mehreren Nachnamen nicht durch z.B. ein Leerzeichen getrennt werden.
Du kannst doch einfach mal Tests schreiben, um alle Fälle zu testen.
 
Suche doch einfach mit indexOf nach dem letzten Leerzeichen im String und nutze dann subString um die beiden Ergebnisse zu bekommen.

Gruß

Claus
 
Java:
String name = toAddress.getPersonal().trim();
String firstName = "";
String lastName = name;
int ix = name.lastIndexOf(' ');
if (ix != -1) {
    firstName = name.substring(0, ix) /* .trim() // optional */ ;
    lastName = name.substring(ix+1);
}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben