从TextBox填充整数数组

时间:2014-07-30 14:56:08

标签: c# arrays string winforms collections

我的winforms应用程序中有一个文本框,当我录制此值时,例如 1258

 int[] arr = new int[] { textBox1.Text[0], textBox1.Text[1], textBox1.Text[2], textBox1.Text[3] };

arr的内容是:49,50,53,56不是1,2,5,8 !!!

即使我使用StringTrim方法,我也得到相同的结果

我需要知道这个错误的原因是什么?我该如何解决?

3 个答案:

答案 0 :(得分:8)

这是由于从charint的隐式转换。

您获得了字符的ASCII值。试试这个:

var arr = textBox1.Text.Select(x => int.Parse(x.ToString())).ToArray();

答案 1 :(得分:1)

那是因为你得到的是ASCII码而不是整数值。

在ASCII中,char'0'= 48 = 30h

然后你可以使用它来获取整数值(例如): textBox1.Text [0] - 48

请注意,它仅适用于1位数的值,您需要解析更多数字。

答案 2 :(得分:-1)

它将ASCII值插入数组。因此,不是0而是插入48,而不是1,它插入49,依此类推。

如果您需要文本中的实数,则需要使用int.Parse("1")解析它 因此,对于您的阵列,这应该可行,即使它不是最佳解决方案。

int[] arr = new int[] { int.Parse(textBox1.Text[0]), int.Parse(textBox1.Text[1]), int.Parse(textBox1.Text[2]), int.Parse(textBox1.Text[3]) };