如何从字符串中获取名字和姓氏?

时间:2021-07-05 17:18:35

标签: java

例如,我有这个字符串:

String fullName = "Andre Santos Silva";

名字是Andre,我想要的姓氏是Santos。 所以我会返回 "Andre Santos"

但我有一些问题,例如:

String fullName = "Andre di Santos Silva"

名字是"Andre",我想要我的姓氏"di Santos" 我的回报必须是 "Andre di Santos"

另一个例子:

String fullName = "Andre e Santos Silva"

我的名字是"Andre",我的姓氏是"e Santos" 我的回报必须是 "Andre e Santos"

我怎样才能得到这个带有名字和“第一个”姓氏的字符串?

1 个答案:

答案 0 :(得分:4)

完全不可能。

“名字”和“姓氏”的概念不是全球性的,而名字通常是。即使您决定对全球人口的很大一部分竖起中指并表现得像那些人一样无所谓,但其余地方确实有一个名字/姓氏方案,大致符合您对如何使用的明显想法整个世界都给事物命名,它不够一致,无法仅从输入字符串中确定名字和姓氏,除非您将一些非常重要的模式匹配人工智能算法投入其中。

解决方案:别担心。没有名字和姓氏之类的东西,只有名字。如果您有一些必须知道的低音 ackwards 旧系统,请告诉它的开发人员使用该程序。如果你不能告诉他们,那么问问你从哪里得到这个输入,把它用“名字”和“姓氏”分开。如果你也做不到,那你就完蛋了;告诉任何给您指示来构建此软件的人,这是不可能的,下一步不是技术/开发,而是政治/组织:说服供应商更改流程,以便以名字/姓氏提供输入表单,或说服您将此数据传递给的对象,不要再以名字/姓氏的形式使用它。

一些示例名称来说明为什么世界不像您认为的那样运作。请成为计算机算法并准确地向我解释每个全名的名字和姓氏。这些是官方名称,例如在相关情况下显示在护照中。

  • 输入:Prince Harry, Duke of Sussex。 (正确的 OUT:HenryMountbatten-Windsor,这显然不可能源自该名称!)
  • IN:Ivan Ivanovich(正确的 OUT:Ivan,这里没有姓氏。那是父名,不是一回事。俄罗斯起源的名字通常有一个实际的姓氏(从某种意义上说,他们的父母或父母也有这个名字,你可以称之为“姓氏”,但他们通常不使用这个名字,如果他们必须在表格中输入他们的全名,你很可能获得名字 + 父名,仅此而已。
  • IN:Nanna Bryndís Hilmarsdóttir(正确的 OUT:Nanna BryndísHilmarsdóttir - 可能。但如果你期望她的父亲、母亲或假设的孩子也有这个姓氏,不,他们不会,并称他们的“姓氏”是错误的。这也是父名,但与俄罗斯不同,据我所知,在冰岛,姓氏不是一回事 - 他们的父名出于所有意图和目的,他们的姓氏。这只是.. 不是姓氏)。
  • Kim Jong-il。 (更正输出:Jong-il Kim 或可能 Yuri Kim 或可能 Yuri Irsenovich Kim - 请注意输入中的第一个子字符串是 <强>姓氏。这在许多亚洲文化中都很常见,包括韩国(两者)、中国等等。
  • IN José Antonio Gómez Iglesias(OUT:嗯,如果这是西班牙人,顾名思义,那么正确的细分是José AntonioGómez Iglesias,但很少有但可能正确的细分是 José Antonio GómezIglesias。绝对没有办法确定。第一个是迄今为止最有可能的,但这是基于名称'听起来很西班牙”。这就是整个“你需要一个非常复杂的 AI 规则集来尝试解决这个问题”的地方,它需要匹配这种行为:根据一个巨大的神经网络或其他数据库检查名称以猜测它很有可能起源于西班牙,并且 Gómez 是一个常见的姓氏)。
  • 输入:Johannes Vennegoor of Hesselink。 (更正 OUT:JohannesVennegoor of Hesselink。如果按姓氏排序,则在“V”下排序)。
  • IN: Jan Willem Vergeer (Correct OUT: Jan Willem, Vergeer。与之前的答案相反。使用基本的字符串算法完全不可能分离出来。唯一的方法是使用 AI确定 Jan Willem 是一个常见的荷兰名字,官方拼写通常没有连字符)。
  • IN:Andries de Witt(正确的 OUT:Andries de Witt,但 de 是插页式广告。如果排序,您必须在 W 上排序,而不是d。在无法处理此问题的系统中,通常将其拆分为 AndriesWitt, de,例如,荷兰电话簿将采用后一种方法)。
相关问题