如何用ASCII码将小写转大写且保留字符串中的原有大写字母?
问题分析
当前代码的核心问题是:你只在字符是小写字母(ASCII 97-122)时,才将转换后的大写字母追加到结果字符串s中,其他所有字符(包括原有的大写字母、数字、符号等)都被直接忽略了,所以输入AbCd时,只有b和d被处理,输出自然是BD。
修改方案
要实现「转小写为大写,同时保留原有大写及其他非小写字符」的需求,需要做两个关键调整:
- 每次点击按钮时重置结果字符串
s,避免多次点击导致内容累加 - 遍历每个字符时,所有字符都要加入结果:小写字母转大写后加入,其他字符直接保留原内容
修改后的代码
string str; String s; private void button1_Click(object sender, EventArgs e) { str = textBox1.Text; s = ""; // 每次点击重置结果,避免多次点击内容累加 foreach (char c in str) // 直接遍历char类型更直观,无需转int { if (c >= 'a' && c <= 'z') // 用字符常量替代ASCII数字,可读性更强 s += (char)(c - 32); else s += c; // 非小写字符直接保留原内容 } textBox2.Text = s; }
额外优化建议
你可以用C#自带的字符判断方法替代ASCII范围判断,代码更健壮且无需硬记ASCII码值:
string str; String s; private void button1_Click(object sender, EventArgs e) { str = textBox1.Text; s = ""; foreach (char c in str) { if (char.IsLower(c)) s += char.ToUpper(c); else s += c; } textBox2.Text = s; }
内容的提问来源于stack exchange,提问作者karenkjp
相关产品推荐
相关产品推荐

