2010-12-16 3 views

Antwort

2

Unter der Annahme, dass Ihre Eingabe Vorname Name Name Name, teilen Sie die Zeichenfolge und verwenden erste und letzte Indizes:

String bigName = "John McDonalds Harris" 
String[] names = bigName.split(" "); 
System.out.println(String.format("FirstName: %s : LastName: %s", names[0], names[names.length-1])); 

Es druckt: FistName: John: Name: Harris

+2

Deine "Annahme" scheint genau der Diskussionspunkt zu sein, den der OP erhob ... – chiccodoro

+0

-1 Das ist genau der Punkt der Diskussion: Es ist * nicht * nur "das letzte Wort als Nachname zu nehmen " und das ist es! – perdian

+0

Ja, aber müssen die Namen werden den Code, den ich tat, die meisten westlichen Namen sind so, nicht alle ja, aber müssen von ihnen, mein Name haben zwei Nachnamen aber wie ich sagte MUST von ihnen sind Vorname Name Name Name Nachname, Wenn Sie radikal werden wollen, sind die japanischen Namen rückwärts Nachname Vorname Name Name. . . – DVD

2

Ich glaube nicht. Es hängt hauptsächlich von den Daten ab, die Sie zur Verfügung haben. Wenn der Benutzer immer "Vorname Nachname" eingibt, können Sie nach dem letzten Leerzeichen suchen, eine Trennung durchführen und das wars.

Aber für den typischen deutschen Kunden gibt es eine große Auswahl an möglichen fehlenden Treffern. Namen wie "Hans Ulrich-Schmidt" wo der Benutzer den Bindestrich vergisst (oder schlimmer noch, er wird explizit nicht eingegeben) werden nicht richtig geparst. Aber es gibt keinen klaren Weg festzustellen, ob der "Ulrich" in "Hans Ulrich Schmidt" Teil des Vor- oder Nachnamens ist.

Das ist nur ein Beispiel, es gibt viele mehr, also denke ich: Nein, das ist nicht möglich.

+2

hinzuzufügen: Mindestens in der Schweiz und soweit ich das in Deutschland weiß, es ist möglich * * eine zusammengesetzt zu haben, Nachname * ohne * ein Bindestrich. Du bist also völlig verloren. – chiccodoro

+0

Es gibt auch regionale Unterschiede: Manche Menschen neigen dazu, zuerst ihren Nachnamen zu schreiben und ihren/ihre Vorname (n) zu führen, so dass "Klaus Müller" zu "Müller Klaus" wird ...und du bist verloren (wieder!) – perdian

4

Sie gehen davon aus, dass " westliche Namen "haben alle das gleiche einfache Format. Das ist nicht so. Zum Beispiel haben Spanish names im Allgemeinen zwei "Nachnamen", kann aber ein bisschen komplizierter werden.

Viele europäische Länder haben nobility particles, die Namen erschweren können.

Namen sind kulturell und Kulturen sind viel vielfältiger und komplexer als die meisten Menschen sich vorstellen. Sogar im "Westen".

1

Es hängt vom ursprünglichen Format ab. Zum Beispiel in VCards ist das Standardformat

LastName;FirstName 

Das Trennzeichen ist Semikolon.

Im Allgemeinen ist es extrem schwierig. Ich stimme denen zu, die das schon gesagt haben. Wenn Sie das Problem ernsthaft lösen wollen, müssen Sie den Locale-abhängigen Parser implementieren. Zum Beispiel werden Englisch normalerweise als Vorname und dann als Nachname zusammengesetzt. Ungarn schreiben Nachnamen und dann Vornamen. Im Russischen ist es komplizierter: Manchmal ist es Vorname und Nachname, manchmal verwenden sie umgekehrte Reihenfolge. Es hängt vom Textstil ab. Die umgekehrte Reihenfolge wird in formelleren Texten verwendet.

Sie können Wörterbücher mit Vor- und Nachnamen verwenden. Dies kann in einigen Fällen helfen. Aber was macht man mit Namen wie "Elton John"? Und was ist mit "Warren Christopher"? und "Christopher Robin"?

Wahrscheinlich, wenn Sie eine große Liste von Namen haben und alle Namen im selben Format geschrieben sind, können Sie den Stil zuerst mit dem Namen-Wörterbuch erkennen und dann verwenden. Sie werden wahrscheinlich 90% des Erfolgs bekommen.

Viel Glück

Verwandte Themen