我正在做一个网站迁移,涉及从全名中提取名字和姓氏。鉴于这些是由最终用户创建的,因此存在各种排列组合(尽管英语通常并不太奇怪)。大多数情况下,我可以将第一个词作为名字,将最后一个词作为姓氏,但偶尔会有前缀和后缀。在浏览数据并试图了解所有可能的异常时,我意识到这是一个常见问题,之前至少部分解决了很多次。
在重新发明轮子之前,有没有人有任何对他们有用的正则表达式或有用的代码?性能不是考虑因素,因为这是一次性实用程序。
要处理的典型值:
Jason Briggs, J.D. Smith, John Y Citizen, J Scott Myers, Bill Jackobson III, Mr. John Mills
更新:虽然这是一个常见问题,但典型的解决方案似乎涉及处理大多数情况并手动清理其余情况。
(考虑到这个问题必须经历的频率,我原本希望在那里找到一个实用程序库,但我自己用谷歌找不到)
最佳答案
我的建议如下:
用空格分隔名称。
检查返回数组的长度。如果2,容易 split 。如果更多,下一个。
比较前缀的第一个值(即 Mr. Mrs. Ms. Dr.)...如果是,则将其删除,否则转到下一个。
比较第一个值的长度。如果只有 1 个字符,则合并数组中的前 2 项。
它仍然不是万无一失的;但是,它应该至少解决您 80% 的案例。
希望这对您有所帮助。
关于c# - 在 C# 中将名字和姓氏与全名字符串分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1219094/