18

有人知道如何正确大写人名的一些代码/规则吗?

  • 约翰·史密斯
  • 约翰·范伦斯堡
  • 德里克·冯·高
  • 鲁比·德拉富恩特
  • 彼得麦克劳林
  • 加里·麦克唐纳

(这些可能不正确,只是一些示例名称以及大写如何/如何工作)

这似乎是一场失败的战斗......

如果有人对何时以及如何大写名称有一些代码或规则,请告诉我:)

干杯,阿尔伯特

4

6 回答 6

19

在我看来,唯一明智的处理方法是让用户告诉你他们的名字应该如何大写。任何自动方案都会惹恼某人。

于 2010-03-17T23:59:34.617 回答
7

告诉他们你是老学校。这使它变得简单且 100% 正确:

- JOHN SMITH
- JOHAN VAN RENSBURG
- DERRICK VON GOGH
- RUBY DE LA FUENTE
- PETER MACLAURIN
- GARRY MCDONALD

同样的逻辑也有助于解决许多 i18n 问题。

于 2010-03-18T01:30:42.970 回答
6

维基百科似乎对此有很好的报道:

大写 - 复合名称

于 2010-03-17T23:47:42.693 回答
3

我不确定 Ruby 是否有用,但您可能想看看NameCase。即使您没有使用 Ruby,您也可以将它(它是开源的)移植到您的语言中。

于 2010-03-17T23:54:10.683 回答
2

Python 中也有这个实现,它基于这个算法。基本思想是将名称转换为标题大小写,然后对照巨大的异常查找表检查名称。

但实际上 Jonathan Leffler 所说的是正确的:除非您需要转换预先存在的未格式化数据,否则自动大写会做错事(特别是因为大写规则因语言鸿沟、文化鸿沟、移民导致的名称变化而异或者人们只是喜欢以某种特定的方式将他们的名字大写)。

于 2010-03-18T00:47:41.150 回答
1

我一直在查找需要特殊处理的名称。当找到不区分大小写的匹配时,我使用了查找值。这并没有解决使用与“接受”大写不匹配的案例的人。它允许我/用户根据需要添加名称。我找不到我的代码,但我确实从http://www.census.gov/获得了姓氏。

于 2010-03-17T23:54:06.343 回答