繁体   English   中英

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

[英]Is it possible to convert full name to firstname and lastname?

我需要将全名转换为名字和姓氏。 如果名字大多是西方的,这是否有可能在90%的成功率内?

您假定“西方名称”都具有相同的简单格式。 事实并非如此。 例如, 西班牙语名称通常具有两个 “姓氏”,但可能会变得更加复杂。

许多欧洲国家的贵族分子可以使名字复杂化。

名字是文化的,文化比大多数人想象的要多样化和复杂得多。 即使在“西方”。

我不这么认为。 它主要取决于您可用的数据。 如果用户总是输入“ Firstname Lastname”,那么您可以检查最后一个空格,执行分隔,仅此而已。

但是对于典型的德国客户来说,可能会丢失很多匹配项。 诸如“ Hans Ulrich-Schmidt”之类的名称将使用户忘记破折号(或更糟的是,明确地不输入破折号),将无法正确解析。 但是没有明确的方法来确定“汉斯·乌尔里希·施密特”中的“乌尔里希”是姓还是名。

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

假设您输入的是FirstName Name Name LastName,请分割字符串并使用first和last索引:

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

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

LastName;FirstName

分隔符是分号。

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

您可以尝试使用名字和姓氏的字典。 在某些情况下这可能会有所帮助。 但是,使用“ Elton John”之类的名字怎么办? 那“沃伦·克里斯托弗”呢? 和“克里斯托弗·罗宾”?

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

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM