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

标签 c# regex

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

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

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

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

在所有情况下,如上所示,输出将是 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 替换你的匹配项。

关于c# - 正则表达式 "Full Name"到 "Abbreviated Name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248856/

相关文章:

c# - 条形码扫描事件捕获文本

c# - Xamarin Studio btouch 不支持字段类型 : NSUuid

C++:检查字符串是否是有效的 MD5 十六进制哈希

c# - 正则表达式替换方括号中除外的字符串

c# - 如何从正则表达式中获取匹配的字符串? [C#]

c# - 将 byte[] 转换为 String 并返回 c#

c# - Application_Error() 未触发

JavaScript:正则表达式 index.html 超出 URL

ruby - 一个在 Ruby 上表现非常糟糕的简单正则表达式

c# - 换行的正则表达式