String nach erstem Leerzeichen trennen

Diskutiere String nach erstem Leerzeichen trennen im Java Basics - Anfänger-Themen Bereich.
B

beta20

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?
 
T

thecain

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)
 
Kirby_Sike

Kirby_Sike

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?
 
B

beta20

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?
 
B

beta20

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);
                }
            }
 
H

httpdigest

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.
 
Thallius

Thallius

Suche doch einfach mit indexOf nach dem letzten Leerzeichen im String und nutze dann subString um die beiden Ergebnisse zu bekommen.

Gruß

Claus
 
mihe7

mihe7

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);
}
 
Thema: 

String nach erstem Leerzeichen trennen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben