Skip to main content
 首页 » 编程设计

c#之正则表达式 "Full Name"到 "Abbreviated Name"

2024年06月03日16jpfss

我们需要将全名转换为缩写名,其中输入的组合变化如下:

输入:[可选标题] [名字或首字母] [姓氏]

输出:[可选标题] [初始] [姓氏]

  • 安德鲁·史密斯先生
  • 史密斯先生
  • 史密斯
  • 安德鲁·史密斯

在所有情况下,如上所示,输出将是 Mr A Smith(有头衔的地方)或 A Smith(没有头衔的地方),并且我认为这最好通过 RegEx 实现,尽管我不知道正确执行此操作的语法是什么。

我自己尝试了一些,只得到了混合(不正确)的结果。

作为注释;名字“可能”包含特殊字符,没有人有中间名;所以我们可以在列表中添加一个名为 Mr James O'Reilly-Bond 的人,他将导致 Mr J O'Reilly-Bond

这是用 C# 编写的

请您参考如下方法:

虽然不使用正则表达式当然是一种选择,但我理解不想列出可能的标题。如果标题始终是 2 个名称或 3 个名称,您可以使用 (([A-Z])\S*)(?=\s\S*$),如 https://regex101.com/r/tR7kV2/1 所示.

这个想法是你选择倒数第二个词,这个词在捕获组 $1 中,它的大写字母 - 在捕获组 $2 中,你用 $2 替换你的匹配项。