C#遍历文本框输入字符后完整显示所有ASCII值的方法
解决C#中TextBox只显示最后一个字符ASCII值的问题
嘿,刚学C#就能动手写代码很棒呀!你遇到的问题其实很常见——每次循环里都把结果变量重新赋值了,之前的字符ASCII值都被覆盖掉,所以最后只留下了最后一个字符的结果。
问题原因
你的代码里每次循环都会执行类似string r = Convert.ToInt32(c).ToString();的操作(推测你没写完的部分是转成字符串),这意味着每遍历一个字符,r就会被新的值替换,之前的内容完全丢失,循环结束后r自然只有最后一个字符的ASCII值。
修改方案:累加结果而不是覆盖
我们需要初始化一个用来累加所有结果的变量,每次循环把当前字符的ASCII值追加进去,而不是替换。这里有两种简单的实现方式:
方式1:使用普通字符串拼接(适合初学理解)
// 获取输入文本 string input = textBox1.Text; // 初始化空字符串用来存所有ASCII值 string allAsciiValues = ""; foreach (char c in input) { // 转换当前字符为ASCII值 int asciiNum = Convert.ToInt32(c); // 把当前ASCII值追加到结果里,加个空格分隔更易读 allAsciiValues += asciiNum + " "; } // 去掉最后多余的空格(可选,让输出更整洁) allAsciiValues = allAsciiValues.Trim(); // 把最终结果显示到TextBox2 textBox2.Text = allAsciiValues;
方式2:使用StringBuilder(更高效,适合大量字符输入)
因为C#里字符串是不可变的,每次拼接都会生成新的字符串,输入内容多的时候效率会降低。用StringBuilder可以避免这个问题:
// 记得在代码顶部添加引用 using System.Text; string input = textBox1.Text; StringBuilder sb = new StringBuilder(); foreach (char c in input) { int asciiNum = Convert.ToInt32(c); // 追加ASCII值和空格 sb.Append(asciiNum).Append(" "); } // 转换为字符串并去掉最后空格,然后赋值给TextBox2 textBox2.Text = sb.ToString().Trim();
这样修改后,输入abc的话,TextBox2就会显示97 98 99啦,所有字符的ASCII值都能完整展示~
内容的提问来源于stack exchange,提问作者Taylor-byte
相关产品推荐
相关产品推荐

