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

C#中将特定字符串转换为驼峰式命名的问题求助

驼峰式命名转换问题

目标字符串:

here %it -RAINS

预期输出:

hereItRains

当前使用的C#扩展方法:

public static string ToCamelCase(this string str)
{
    var words = str.Split(new[] { "_", "-", "%" }, StringSplitOptions.RemoveEmptyEntries);

    words = words.Select(word => char.ToUpper(word[0]) + word.Substring(1)).ToArray();
    
    return string.Join(string.Empty, words);
}

实际输出:

HereItRAINS

问题分析

你的代码存在三个核心问题:

  1. 首单词首字母被错误大写:小驼峰命名要求首单词首字母小写,当前代码把所有单词的首字母都做了大写处理
  2. 后续单词剩余字母未统一转小写:原字符串中的大写片段(如RAINS)被直接保留,不符合驼峰式命名的统一格式要求
  3. 未处理空格分隔符:原字符串中的空格未加入分割集合,可能导致分割出的单词带多余空白字符

修正后的代码

public static string ToCamelCase(this string str)
{
    // 加入空格到分割符集合,覆盖所有目标分隔场景
    var separators = new[] { "_", "-", "%", " " };
    var words = str.Split(separators, StringSplitOptions.RemoveEmptyEntries);

    if (words.Length == 0) return string.Empty;

    // 处理首单词:首字母小写,其余字符统一转小写
    var firstWord = char.ToLower(words[0][0]) + words[0].Substring(1).ToLower();
    // 处理后续单词:首字母大写,其余字符统一转小写
    var otherWords = words.Skip(1)
                          .Select(word => char.ToUpper(word[0]) + word.Substring(1).ToLower());

    return string.Concat(firstWord, string.Concat(otherWords));
}

修正说明

  • 扩展分割符包含空格,确保分割出的单词无多余空白字符
  • 首单词单独处理,严格遵循小驼峰首字母小写的规则
  • 所有单词的剩余字符统一转小写,避免原字符串中大小写混乱的问题
  • 使用string.Concat替代Join,因无需分隔符,性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:55:09