2010-12-16 49 views

回答

2

假設你輸入名字名稱名稱姓氏,分割字符串,並使用第一和最後一個指標:

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

它會打印:FistName:約翰:名字:哈里斯

+2

你的「假設」看起來就像OP提出的討論點...... – chiccodoro 2010-12-16 11:20:24

+0

-1這就是討論的要點:它不是*只是「把最後一個字作爲姓「就是這樣! – perdian 2010-12-16 11:31:34

+0

是的,但必須的名字將通過我所做的代碼,大多數西方人的名字都是這樣,並非所有的都是,但必須是他們,我的名字有兩個姓氏,但就像我說的必須是名字姓名姓氏姓氏,如果你想得到激進的Japonese名字是倒退姓氏名字姓名的名字。 。 。 – DVD 2010-12-16 12:06:19

2

我不這麼認爲。它主要取決於你可用的數據。如果用戶總是輸入「名字姓氏」,那麼你可以檢查最後一個空格,執行分離,就是這樣。

但是對於典型的德國客戶來說,可能會有大量的缺失匹配。名稱如「Hans Ulrich-Schmidt」用戶忘記破折號(或者更糟,明確地不輸入它)將不會被正確解析。但是沒有明確的方法來確定「Ulrich」「Hans Ulrich Schmidt」是否屬於第一個或最後一個名字。

這只是一個例子,還有更多,所以我認爲:不,這是不可能的。

+2

補充:至少在瑞士和據我知道在德國它是* *可能有一個由姓* *沒有了幾許。所以你完全失去了。 – chiccodoro 2010-12-16 11:31:48

+0

也有區域差異:有些人傾向於先寫作(並說出)他們的姓氏,他們的名字是最後一個名字,所以「KlausMüller」成爲「MüllerKlaus」......並且你迷路了(再次!) – perdian 2010-12-16 11:35:50

4

您認爲「西方名字「都有相同的簡單格式。事實並非如此。例如,Spanish names一般有兩個「姓氏」,但可能會變得相當複雜一點。

許多歐洲國家都有nobility particles這可能會使名稱複雜化。

名稱是文化的,文化比大多數人想象的要複雜得多和複雜。即使在「西方」。

1

這取決於初始格式。例如在VCards中,標準格式是

LastName;FirstName 

分隔符是分號。

在一般情況下,這是非常困難的。我同意已經說過的人。 如果你真的想解決這個問題,你必須實現Locale相關的解析器。例如,英語通常由名字和姓氏組成。匈牙利人寫姓和名字。在俄語中,它更復雜:有時它是名和姓,有時它們使用相反的順序。這取決於文本樣式。相反的順序用在更正式的文本中。

您可以嘗試使用名字和姓氏的字典。這可以在某些情況下有所幫助。但如何處理像「埃爾頓約翰」這樣的名字?那麼「沃倫克里斯托弗」呢?和「克里斯托弗羅賓」?

也許如果您有大量的名稱列表,並且所有名稱都使用相同的格式編寫,那麼您可以先使用名稱字典檢測樣式,然後使用它。你可能會獲得90%的成功。

好運

相關問題