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

如何简化含可选MiddleName的姓名拼接生成Url的逻辑?

简化方案建议

方案1:利用列表收集有效部分再拼接(最易维护)

先封装一个格式化名字的辅助方法,避免重复写Replace和ToLower,然后把非空的名字部分加入列表,最后用string.Join拼接,逻辑清晰且扩展性强(后续加更多可选字段也方便):

// 辅助方法,提取重复的格式化逻辑
private string FormatNameSegment(string name)
{
    return name.Replace(" ", "-").ToLower();
}

// 生成Url的逻辑
var nameSegments = new List<string>
{
    FormatNameSegment(newContributor.FirstName),
    FormatNameSegment(newContributor.LastName)
};

// 中间名非空时插入到列表中间
if (!string.IsNullOrEmpty(newContributor.MiddleName))
{
    nameSegments.Insert(1, FormatNameSegment(newContributor.MiddleName));
}

newContributor.Url = string.Join("-", nameSegments);

方案2:三元运算符简化分支逻辑

如果不想用列表,也可以用三元运算符直接拼接,同样先封装格式化方法减少重复:

private string FormatNameSegment(string name)
{
    return name.Replace(" ", "-").ToLower();
}

var firstName = FormatNameSegment(newContributor.FirstName);
var lastName = FormatNameSegment(newContributor.LastName);
var middleNamePart = string.IsNullOrEmpty(newContributor.MiddleName) 
    ? "" 
    : $"{FormatNameSegment(newContributor.MiddleName)}-";

newContributor.Url = $"{firstName}-{middleNamePart}{lastName}";

方案3:LINQ一行式(简洁但可读性稍弱)

如果喜欢更紧凑的写法,可以用LINQ过滤空值后拼接:

newContributor.Url = string.Join("-", 
    new[] { newContributor.FirstName, newContributor.MiddleName, newContributor.LastName }
        .Where(n => !string.IsNullOrEmpty(n))
        .Select(n => n.Replace(" ", "-").ToLower())
);

这个方案直接把三个名字放入数组,过滤掉空的中间名,再统一格式化后拼接,代码量最少,适合逻辑简单的场景。

内容的提问来源于stack exchange,提问作者Darkmatter5

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:33:27