You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何实现全大写姓氏前自动插入逗号的姓名格式化

最优实现方案

推荐用正则匹配替代逐段遍历的写法,逻辑更简洁可维护,完整实现如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

class AuthorNameFormatter
{
    // 单个姓名格式化逻辑
    private static string FormatSingleAuthor(string rawName)
    {
        // 正则匹配首个全大写单词的前置位置,零宽断言不会消耗原有字符
        var pattern = @"(?<!\S)(?=[A-Z]+(?!\S))";
        // 只替换第一个匹配项,保证仅在首个姓氏前加逗号
        var formatted = Regex.Replace(rawName, pattern, ", ", 1);
        return formatted;
    }

    static void Main()
    {
        var aut_examp = new List<string>{"Jenny BLACK", "Helen BROWN EYE", "Henna Tamara GREEN"};
        
        // 批量格式化所有作者名
        var formattedAuthors = aut_examp.Select(FormatSingleAuthor).ToList();
        
        // 多作者用&拼接,无需手动计数加连接符
        string author_final = formattedAuthors.Count > 1 
            ? string.Join(" & ", formattedAuthors) 
            : formattedAuthors.FirstOrDefault() ?? string.Empty;
        
        Console.WriteLine(author_final);
        // 输出结果:Jenny, BLACK & Helen, BROWN EYE & Henna Tamara, GREEN
    }
}

如果你的业务场景存在带连字符、单引号的全大写姓氏(比如Mary O'CONNOR、Lily ANNE-MARIE),只需要调整正则的字符匹配规则即可,不需要修改整体逻辑。

方案优势

  1. 逻辑解耦:姓名格式化规则和多作者拼接逻辑完全分离,后续如果要调整姓氏判断规则,只需要修改FormatSingleAuthor方法即可
  2. 代码简洁:不用手动拆分字符串、遍历判断字符大小写,正则直接匹配目标插入位置,1行代码完成核心格式化逻辑
  3. 鲁棒性更强:天然支持多名字、多姓氏场景,默认只在第一个全大写的姓氏前插入逗号,完全符合需求规则

内容的提问来源于stack exchange,提问作者Habip Oğuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:27:05