2010-12-16 47 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%的成功。

好运

相关问题