【发布时间】:2014-09-22 04:16:24
【问题描述】:
我需要将包含“First Last”格式的名称的字符串更改为“Last, First”格式。问题是,字符串可能像“John Smith”,也可能是“Mr. John Smith”,甚至是“Mr. John A. Smith”。我怎样才能消除“先生”?部分和中间名/初始部分,然后将其设为“史密斯,约翰”?顺便说一句,我讨厌字符串...我预见到很多修剪(右),修剪(左)废话...请让它更容易!
我的目标是通过姓氏的第一个字母从数据库字段 NAME 中选择记录。 NAME 字段包含诸如“John Smith”“Mr. Roger A. Smith”“Mr. Jones”等名称。我只需要一个返回 Smith 而不是 Jones 的搜索函数。
【问题讨论】:
-
Uncle Bob 有一个关于 TDD 的截屏视频,专门处理此要求以及如何编写满足它的测试。它涵盖了称呼等。不过,我这辈子都不记得是哪一个了!
-
如果没有特定的文化知识,可能没有完整的答案 - 例如,如果某人的名字是“Jean-Claude Van Damme”,那么正确的答案可能是“Van Damme, Jean- Claude”(如导演的情况),但如果存在以“Van”作为有效中间名的文化,也可以是“Damme, Jean-Claude”。在某些文化中,姓氏是第一位的,例如中国。没有“规则”。我的一位祖先的姓氏(在相关语言中)几乎与“芒斯小姐”一模一样。
-
另外,在荷兰语中,像 JCVD's 这样的名字将在电话簿中的字母“D”下被列为“van Damme, Jeann-Claude”(还要注意“van”中的小写“v” ”。另一个常见的前缀是“van der”——如“van der Graaf generator”——有时缩写为“v/d Graaf”
-
鲍勃叔叔是谁?我猜 Jean-Claude 的问题不会出现太多,因为它是一个美国项目,名字大多是美国人。
-
该字符串是如何形成的?是用户输入吗?