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
问题分析
你的代码存在三个核心问题:
- 首单词首字母被错误大写:小驼峰命名要求首单词首字母小写,当前代码把所有单词的首字母都做了大写处理
- 后续单词剩余字母未统一转小写:原字符串中的大写片段(如
RAINS)被直接保留,不符合驼峰式命名的统一格式要求 - 未处理空格分隔符:原字符串中的空格未加入分割集合,可能导致分割出的单词带多余空白字符
修正后的代码
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
相关产品推荐
相关产品推荐

