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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:40:51