是否可以将全名转换为名字和姓氏?

时间:2010-12-16 11:11:13

标签: java

我需要将全名转换为姓氏和名字。如果姓名主要是西方人,这可能在~90%的成功率范围内吗?

4 个答案:

答案 0 :(得分:4)

您认为“西部名称”都具有相同的简单格式。事实并非如此。例如,Spanish names通常有两个“姓氏”,但可能会变得更复杂。

许多欧洲国家nobility particles可能会使名称复杂化。

名称是文化的,文化比大多数人想象的更加多样化和复杂。甚至在“西方”。

答案 1 :(得分:2)

我不这么认为。它主要取决于您可用的数据。如果用户总是输入“姓氏姓氏”,那么您可以检查最后一个空格,执行分离,就是这样。

但对于典型的德国客户来说,有很多可能缺少的比赛。像“Hans Ulrich-Schmidt”这样的名称,用户忘记破折号(或者更糟糕的是,明确地不输入破折号)将无法正确解析。但是没有明确的方法可以确定“Hans Ulrich Schmidt”中的“Ulrich”是否属于第一个或最后一个名字。

这只是一个例子,还有更多我想:不,这是不可能的。

答案 2 :(得分:2)

假设您的输入是FirstName Name Name LastName,请拆分字符串并使用第一个和最后一个索引:

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:John:LastName:Harris

答案 3 :(得分:1)

这取决于初始格式。例如,在VCards中,标准格式为

LastName;FirstName

分隔符是分号。

一般情况下,这是非常困难的。我同意那些已经说过这个的人。 如果您真的想要解决问题,则必须实现依赖于Locale的解析器。例如,英语通常由名字和姓氏组成。匈牙利人写了姓,然后是名字。在俄语中它更复杂:有时它是名字和姓氏,有时它们使用相反的顺序。这取决于文本样式。相反的顺序用于更正式的文本中。

您可以尝试使用名字和姓氏的词典。这在某些情况下会有所帮助。但是如何处理像“埃尔顿约翰”这样的名字?那么“沃伦克里斯托弗”呢?和“克里斯托弗罗宾”?

如果你有一个很大的名字列表并且所有名字都是用相同的格式编写的,你可以先使用名字字典检测样式,然后再使用它。您可能会获得90%的成功。

祝你好运