您好,我正在尝试将一个字符串拆分为一个字符数组,但由于某种原因,结果不是我所期望的。我通过了调试器抛出的这段代码,并给了它字符串“34325”。当我出于某种原因,到达将字符串转换为字符数组的代码部分,我可以在调试器中看到两组字符。我得到如下信息:
字符[0] = 51 '3' 字符 [1] = 52 '4' 字符 [2] = 51 '3' 字符 [3] = 50 '2' 字符[4] = 53 '5'
然后当我将 char 数组的每个元素转换为 int 时,第一个数字总是采用:51、52、51、50、53。
我的问题是如何更正此问题以便得到 3 、 4 、 3 、 2 、 5? 还有,当我使用 toCharArray() 方法时,这些数字是从哪里来的:51 ,52 ,51 ,50 53?
这是我的代码:
value = TextBox1.Text;
char[] numberChars = value.ToCharArray();
int[] numbers = numberChars.Select(x => Convert.ToInt32(x)).ToArray();
for( int i = 0; i < numbers.Length; i++ ) {
TextBox2.Text += numbers[i] + " ";
}
最佳答案
如果我没有正确理解你的问题,你想将字符串拆分成代表数字的整数,如下所示:"34325"
变成 new int[] {3,4, 3,2,5}
.
如下更改代码,将表示数字的每个字符解释为一位数:
int[] numbers = numberChars.Select(x => ((int)x)-'0').ToArray();
这是一个link to a demo on ideone .
您看到数字 51
、52
等的原因是您看到了相应数字的 ASCII 代码。
关于c# - ToCharArray 生成两组数字而不是一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223109/