c# - 在 C# 中将名字和姓氏与全名字符串分开

标签 c# regex string

我正在做一个网站迁移,涉及从全名中提取名字和姓氏。鉴于这些是由最终用户创建的,因此存在各种排列组合(尽管英语通常并不太奇怪)。大多数情况下,我可以将第一个词作为名字,将最后一个词作为姓氏,但偶尔会有前缀和后缀。在浏览数据并试图了解所有可能的异常时,我意识到这是一个常见问题,之前至少部分解决了很多次。

在重新发明轮子之前,有没有人有任何对他们有用的正则表达式或有用的代码?性能不是考虑因素,因为这是一次性实用程序。

要处理的典型值:

Jason Briggs, J.D. Smith, John Y Citizen, J Scott Myers, Bill Jackobson III, Mr. John Mills


更新:虽然这是一个常见问题,但典型的解决方案似乎涉及处理大多数情况并手动清理其余情况。

(考虑到这个问题必须经历的频率,我原本希望在那里找到一个实用程序库,但我自己用谷歌找不到)

最佳答案

我的建议如下:

  1. 用空格分隔名称。

  2. 检查返回数组的长度。如果2,容易 split 。如果更多,下一个。

  3. 比较前缀的第一个值(即 Mr. Mrs. Ms. Dr.)...如果是,则将其删除,否则转到下一个。

  4. 比较第一个值的长度。如果只有 1 个字符,则合并数组中的前 2 项。

它仍然不是万无一失的;但是,它应该至少解决您 80% 的案例。

希望这对您有所帮助。

关于c# - 在 C# 中将名字和姓氏与全名字符串分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1219094/

相关文章:

c# - 无法从使用自定义运行时在 Docker 中运行 .NET Core 应用程序的 App Engine 连接到 Google Cloud SQL 中的 postgres

c# - UWP 应用程序中的高级 MVVM 场景 - 如何将模型类用于多个 View 模型?

javascript - 正则表达式在每个括号后添加新的换行符

php - 将非 ascii 字符串作为数组和字符处理

php - 使用php提取字符串的第一个单词

c# - .Net WebException 检查本地机器是否可以访问互联网

c# - 如何使用 Include() 只获取第一个元素?

javascript - 如何使用正则表达式取消选中单选按钮?

Javascript 正则表达式将链接插入列表

c++ - 用\'替换字符串中的单引号