Kebab转Title Case并添加单引号的C#函数优化需求
优化Kebab Case转Title Case的C#函数,处理单独"s"的场景
针对你需要处理分割后单个"s"并添加单引号的需求,我们可以调整原函数的逻辑,先分割字符串再逐个处理片段,具体优化后的代码如下:
private static string ConvertToTitle(string val) { if (string.IsNullOrEmpty(val)) return val; TextInfo textInfo = CultureInfo.CurrentCulture.TextInfo; var parts = val.Split('-'); var resultParts = new List<string>(); for (int i = 0; i < parts.Length; i++) { var part = parts[i]; // 处理单独的"s"片段(非首段) if (part.Equals("s", StringComparison.OrdinalIgnoreCase) && i > 0) { // 将前一个片段与"s"合并为带单引号的形式 var lastPart = resultParts[resultParts.Count - 1]; resultParts[resultParts.Count - 1] = $"{lastPart}'s"; } else { // 普通片段转标题大小写后加入结果列表 resultParts.Add(textInfo.ToTitleCase(part)); } } return string.Join(" ", resultParts); }
逻辑说明
- 空值判断:先处理输入为空或null的情况,避免后续操作抛出异常
- 分割字符串:用
'-'将输入分割为独立片段,方便逐个处理 - 遍历处理片段:
- 如果当前片段是
s(忽略大小写,兼容可能的大写输入)且不是第一个片段,就将它与前一个片段合并为前片段's的形式 - 其他情况直接将片段转为标题大小写后加入结果列表
- 如果当前片段是
- 拼接结果:将处理后的片段用空格拼接成最终字符串
示例验证
- 输入:
basketball-and-football→ 输出:Basketball And Football - 输入:
tennis-soccer→ 输出:Tennis Soccer - 输入:
women-s-dress→ 输出:Women's Dress
内容的提问来源于stack exchange,提问作者samantha07
相关产品推荐
相关产品推荐

