有没有人知道一些关于如何正确地大写人名的代码/规则?
(这些可能不正确,只是一些示例名称和大写如何/工作)
这似乎是一场失败的战斗..。
如果任何人对何时以及如何大写姓名有一些代码或规则,请让我知道:)
干杯,艾伯特
8zzbczxx1#
在我看来,处理这个问题的唯一明智的方法是让用户告诉你他们的名字应该如何大写。任何自动方案都会惹恼某些人。
fhity93d2#
告诉他们你是个守旧的人。这使它变得简单且100%正确:
- JOHN SMITH - JOHAN VAN RENSBURG - DERRICK VON GOGH - RUBY DE LA FUENTE - PETER MACLAURIN - GARRY MCDONALD
同样的逻辑也有助于解决许多i18n问题。
ars1skjm3#
维基百科似乎对此进行了不错的报道:
大写-复合名称
yhuiod9q4#
我不确定Ruby是否有用,但您可能想看看NameCase。即使您不使用Ruby,也可以将其(开放源码)移植到您的语言中。
eiee3dmh5#
还有基于this algorithm的this implementation in Python。基本思想是将名称转换为标题大小写,然后对照一个巨大的异常查询表检查名称。
但乔纳森·莱弗勒说得很对:除非你有转换已有的未格式化数据的要求,否则自动大写将会做一些错误的事情(特别是在大写规则因语言差异、文化差异、移民导致的姓名变化或人们只是更喜欢以某种特定的方式大写自己的名字的情况下)。
wgmfuz8q6#
我保留了一份需要特殊处理的名字的查找。当找到不区分大小写的匹配项时,我使用查找值。这并不能解决使用大小写与“接受的”大小写不匹配的人。它允许我/用户根据需要添加名称。我找不到我的代码,但我确实从http://www.census.gov/得到了姓氏。
6条答案
按热度按时间8zzbczxx1#
在我看来,处理这个问题的唯一明智的方法是让用户告诉你他们的名字应该如何大写。任何自动方案都会惹恼某些人。
fhity93d2#
告诉他们你是个守旧的人。这使它变得简单且100%正确:
同样的逻辑也有助于解决许多i18n问题。
ars1skjm3#
维基百科似乎对此进行了不错的报道:
大写-复合名称
yhuiod9q4#
我不确定Ruby是否有用,但您可能想看看NameCase。即使您不使用Ruby,也可以将其(开放源码)移植到您的语言中。
eiee3dmh5#
还有基于this algorithm的this implementation in Python。基本思想是将名称转换为标题大小写,然后对照一个巨大的异常查询表检查名称。
但乔纳森·莱弗勒说得很对:除非你有转换已有的未格式化数据的要求,否则自动大写将会做一些错误的事情(特别是在大写规则因语言差异、文化差异、移民导致的姓名变化或人们只是更喜欢以某种特定的方式大写自己的名字的情况下)。
wgmfuz8q6#
我保留了一份需要特殊处理的名字的查找。当找到不区分大小写的匹配项时,我使用查找值。这并不能解决使用大小写与“接受的”大小写不匹配的人。它允许我/用户根据需要添加名称。我找不到我的代码,但我确实从http://www.census.gov/得到了姓氏。