Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设计一种将全名拆分为相关字段的启发式方法_C#_.net - Fatal编程技术网

C# 设计一种将全名拆分为相关字段的启发式方法

C# 设计一种将全名拆分为相关字段的启发式方法,c#,.net,C#,.net,基本上,我需要创建一个方法,该方法将尽最大努力获取名称字段,并将其拆分为title、firstNames和lastNames 例如,丹尼尔·乔治·特朗普先生将成为: 标题:李先生。 名字:丹尼尔·乔治 姓氏:特朗普 或 丹尼尔·乔治·特朗普先生和莎拉·特朗普夫人将成为: 标题:先生和夫人 名字:丹尼尔·乔治和莎拉 姓氏:特朗普和特朗普(有些输入可能是两个姓氏不同的人) 谢谢您可以列出标准头衔(先生、太太等),并尝试匹配其中任何一个。然后,对于两个单词名,使用第一个作为名字,第二个作为姓氏。对于较

基本上,我需要创建一个方法,该方法将尽最大努力获取名称字段,并将其拆分为title、firstNames和lastNames

例如,丹尼尔·乔治·特朗普先生将成为: 标题:李先生。 名字:丹尼尔·乔治 姓氏:特朗普

丹尼尔·乔治·特朗普先生和莎拉·特朗普夫人将成为: 标题:先生和夫人 名字:丹尼尔·乔治和莎拉 姓氏:特朗普和特朗普(有些输入可能是两个姓氏不同的人)


谢谢

您可以列出标准头衔(先生、太太等),并尝试匹配其中任何一个。然后,对于两个单词名,使用第一个作为名字,第二个作为姓氏。对于较长的名字,可以使用前两个单词作为名字,其余的作为最后一个。

您可以列出标准头衔(先生、太太等),并尝试匹配其中任何一个。然后,对于两个单词名,使用第一个作为名字,第二个作为姓氏。对于较长的名字,可以使用前两个单词作为名字,其余的作为最后一个。

不要。不要试图解释程序中的名称。你永远都不会成功,只是有时候会做对

人们的命名是如此的复杂以至于它的研究,被称为人类命名学,是人类学的一个分支

让我们想象你从一个头衔、一个名字、一个中间名和一个姓氏开始。姓是父亲的名字。因此,您只需将名称拆分为组件并分配每个组件

但是,这种方法在数百种情况下显然是错误的。有些人只使用一个名字和一个姓氏。其他人(例如西班牙语)使用一个名字和两个姓氏。一些文化(匈牙利,一些亚洲)颠倒顺序,先是姓,然后是名(东方顺序)。有些人用母亲的名字作为姓氏。有的是氏族的名字,或者家族的历史名字,或者出生地。有些人(葡萄牙语)通常把母亲的姓作为中间名。一些来自使用东方秩序的国家的人在向西方听众讲话时会颠倒顺序,而另一些来自相同国家的人则不会。组合是无限的。一场可怕的噩梦

因此,在我看来,唯一正确的方法是留下一个单一的名称实体,让用户选择他们想去的地方。不要试图解释它


但是,也有一些例外情况,一些外部法规可能要求您的软件遵守给定的一组单独字段。在这种情况下,也只有在这种情况下,您的唯一赌注是直接将其传递给用户,允许他们根据自己的喜好设置字段。

不要。不要试图解释程序中的名称。你永远都不会成功,只是有时候会做对

人们的命名是如此的复杂以至于它的研究,被称为人类命名学,是人类学的一个分支

让我们想象你从一个头衔、一个名字、一个中间名和一个姓氏开始。姓是父亲的名字。因此,您只需将名称拆分为组件并分配每个组件

但是,这种方法在数百种情况下显然是错误的。有些人只使用一个名字和一个姓氏。其他人(例如西班牙语)使用一个名字和两个姓氏。一些文化(匈牙利,一些亚洲)颠倒顺序,先是姓,然后是名(东方顺序)。有些人用母亲的名字作为姓氏。有的是氏族的名字,或者家族的历史名字,或者出生地。有些人(葡萄牙语)通常把母亲的姓作为中间名。一些来自使用东方秩序的国家的人在向西方听众讲话时会颠倒顺序,而另一些来自相同国家的人则不会。组合是无限的。一场可怕的噩梦

因此,在我看来,唯一正确的方法是留下一个单一的名称实体,让用户选择他们想去的地方。不要试图解释它


但是,也有一些例外情况,一些外部法规可能要求您的软件遵守给定的一组单独字段。在这种情况下,也只有在这种情况下,您的唯一赌注是直接将其传递给用户,允许他们根据自己的喜好设置字段。

但是如果有人的姓氏是双筒的呢?此外,将标题与列表匹配可能很耗时。很难判断“Steven Vaughan Williams”中的“Vaughan”是中间名还是姓氏的一部分,因此我认为你不能比猜测更好。事实上,我想你可能会有一个普通的双筒姓氏和两个单词的名字的列表……我想存储一个普通名字的列表。但我担心性能成本,我希望你们没有亚洲用户。你的简单启发会让他们失望。但如果某人的姓氏是双重的呢?此外,将标题与列表匹配可能很耗时。很难判断“Steven Vaughan Williams”中的“Vaughan”是中间名还是姓氏的一部分,因此我认为你不能比猜测更好。事实上,我想你可能会有一个普通的双筒姓氏和两个单词的名字的列表……我想存储一个普通名字的列表。但我担心性能成本,我希望你们没有亚洲用户。你的简单启发法会对他们不利。是的。这可能是最好的建议+恐怕必须这样做。这就是为什么我只是在设计一些在大多数情况下都能公平下注的东西。显然,让用户来做会容易得多,但不幸的是,中间人只给我们提供了一个全名。我认为你的声明“你永远都不会做对的。”可能有点太强了。@BenH永远不会。例如,“豪尔赫·胡安·加西亚”不能解释明确无误