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

使用StringBuilder实现字符串奇偶位置字母大小写转换求助

解决C#字符串奇偶位大小写转换问题(使用StringBuilder)

Hey Mario, 我完全懂你现在的困惑——之前的习题都顺风顺水,突然卡在StringBuilder的操作上确实有点挠头!别担心,咱们把这个问题拆解开,一步步来搞定它。

核心思路回顾

你要实现的是:第1、3、5…位(奇数位置)字母转小写,第2、4、6…位(偶数位置)字母转大写,比如输入Hello得到hElLo。这里要注意:C#里字符串的索引是从0开始的,所以第1位对应索引0,第2位对应索引1,以此类推——也就是说,我们需要对偶数索引(0、2、4…)的字符转小写,奇数索引(1、3、5…)的字符转大写。

使用StringBuilder的两种实现方式

StringBuilder的优势在于它是可变的,你可以直接修改内部的字符,不用像string那样每次修改都生成新对象,效率更高。下面给你两种可行的写法:

方法一:遍历每个字符并直接修改

这种方式最直观,逐个处理每个位置的字符:

// 接收用户输入
string userInput = Console.ReadLine();

// 用输入字符串初始化StringBuilder
StringBuilder resultBuilder = new StringBuilder(userInput);

// 遍历每个字符的索引
for (int i = 0; i < resultBuilder.Length; i++)
{
    if (i % 2 == 0)
    {
        // 偶数索引(对应第1、3、5...位)转小写
        resultBuilder[i] = char.ToLower(resultBuilder[i]);
    }
    else
    {
        // 奇数索引(对应第2、4、6...位)转大写
        resultBuilder[i] = char.ToUpper(resultBuilder[i]);
    }
}

// 输出转换后的结果
Console.WriteLine(resultBuilder.ToString());

方法二:先转全大写,再处理小写部分

这和你之前想的思路一致——先把整个字符串转成大写,再只处理需要小写的位置(奇数位置,对应偶数索引):

string userInput = Console.ReadLine();

// 先把输入转成全大写,再初始化StringBuilder
StringBuilder resultBuilder = new StringBuilder(userInput.ToUpper());

// 只遍历偶数索引的位置,转小写
for (int i = 0; i < resultBuilder.Length; i += 2)
{
    resultBuilder[i] = char.ToLower(resultBuilder[i]);
}

Console.WriteLine(resultBuilder.ToString());

关键知识点说明

  • StringBuilder[index]:直接通过索引访问和修改对应的字符,这是StringBuilder和string的核心区别(string是不可变的,不能直接通过索引修改)。
  • char.ToLower()/char.ToUpper():这两个方法会自动忽略非字母字符(比如数字、符号),所以如果用户输入包含非字母内容,它们会保持原样,完全符合需求。

测试例子

当你输入Hello时,两种方法都会输出hElLo,和你给出的示例完全一致。

试试看这两种写法,应该能完美解决你的问题!如果还有其他细节想深究,随时提出来~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:17:47