使用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
相关产品推荐
相关产品推荐

