C#字符串指定字符大小写翻转问题求助:代码未达预期输出
问题分析与解决建议
核心问题
你的代码存在三个关键问题导致结果不符合预期:
- 字符串不可变性:C#里的
string是不可变类型,直接尝试修改x[i]不会生效,必须借助可变的字符数组来操作。 - 未保存转换结果:
char.ToLower()和char.ToUpper()是返回新字符的方法,你没有把转换后的结果赋值回去,等于没执行实际修改。 - 逻辑冗余:两个独立的
if会让同一字符被重复检查,改用else if能避免无效判断。
修正后的代码
string x = "TEststRING"; // 把字符串转为可变的char数组 char[] chars = x.ToCharArray(); for (int i = 0; i < chars.Length; i++) { if (char.IsUpper(chars[i])) { chars[i] = char.ToLower(chars[i]); } else if (char.IsLower(chars[i])) { chars[i] = char.ToUpper(chars[i]); } } // 将修改后的char数组转回字符串 string result = new string(chars); Console.WriteLine(result); // 输出:teSTSTring
简化写法(可选)
如果想要更简洁的实现,可以用LINQ一行完成转换:
string x = "TEststRING"; string result = new string(x.Select(c => char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c)).ToArray()); Console.WriteLine(result);
内容的提问来源于stack exchange,提问作者21sili
相关产品推荐
相关产品推荐

