C#实现帕斯卡命名时字符串数组首字符转大写问题排查
修复帕斯卡命名转换的首字母大写问题
你的代码逻辑没问题,不用换思路,只需要修改一行就能解决首字母不生效的问题:
问题根源
Char.ToUpper(write[0]) 这个方法是返回一个新的大写字符,而不是直接修改原字符数组里的元素。你现在只是调用了方法,但没把返回的大写字符赋值回数组的第一个位置,所以原数组的首字母还是小写的。
修复后的代码
static void Main(string[] args) { Console.WriteLine("Write words that you would like to be in pascal case."); var input = Console.ReadLine(); var inputLower = input.ToLower(); var inputLowerSplit = inputLower.Split(' '); for (var i = 0; i < inputLowerSplit.Length; i++) { var write = inputLowerSplit[i].ToCharArray(); // 关键修改:把大写后的字符赋值回数组的第一个位置 if (write.Length > 0) // 避免空字符串导致索引越界 { write[0] = Char.ToUpper(write[0]); } Console.Write(write); } }
额外说明
加了if (write.Length > 0)的判断是为了处理输入中可能出现的连续空格(比如输入hello world,Split后会产生空字符串元素),避免访问write[0]时出现索引越界错误。
内容的提问来源于stack exchange,提问作者mageff
相关产品推荐
相关产品推荐

