如何将一个长输入文本框控件分割成int数组
本文关键字:控件 文本 分割 数组 int 输入 一个 | 更新日期: 2023-09-27 18:01:31
我刚开始学习c#,已经有一个问题,可能相当愚蠢。
我正在写一个小的桌面程序(Windows窗体),检查输入的银行账号是否有效或计算丢失的控制号码。为了检查数字的有效性,我们必须将该数字中的每个数字乘以相应的因子。我的问题是:
当我在TextBlock控件中输入整数(26位数字)并单击检查按钮时,我需要以某种方式将该数字解析为int数组。我已经看到了一些例子,并尝试了
int[] array = new int[26];
char[] sep = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
String[] numbers = inputWindow.Text.Split(sep);
for (int i = 0; i < 26; i++)
array[i] = Int32.Parse(numbers[i]);
但是得到FormatException。我也试过
array = inputWindow.Text.Split().Select(h => Int32.Parse(h)).ToArray());
或类似的东西,但得到OverflowException。Int64。解析导致明显的类型转换错误。如何完成解析?
Thanks in advance
编辑我的错,有30个而不是26个,但实际上这并不重要。
第二个代码段差不多完成了(假设您想要一个数字数组,并且Text
属性中只有数字)。
删除对Split()
的调用,Select()
部分将遍历字符串中的每个字符。
var array = inputWindow.Text.Select(i => Convert.ToInt32(i-48)).ToArray();
我只是在一个控制台应用程序中这样做,并且我能够将数字放入数组中。我没有做数学运算。我想你可以接手了。我还建议使用List而不是数组,这样大小就不固定了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Number: ");
string inputStr = Console.ReadLine();
int[] array = new int[30];
int i = 0;
foreach(Char c in inputStr)
{
array[i] = Convert.ToInt32(c.ToString());
i++;
}
Console.WriteLine("");
foreach (int num in array)
{
Console.WriteLine(num.ToString());
}
Console.ReadLine();
}
}
}
您的整数只有26位,但您的i设置最大值是30 for (int i = 0; i < 30; i++)
, 26小于30,因此array[i] = Int32.Parse(numbers[i])
抛出OverflowException
此代码片段可用于将TextBox文本转换为整数数组。但是你必须确保用户只会在textBox中输入整数
int[] array = new int[30];
char[] sample = textBox1.Text.ToCharArray();
for (int i = 0; i < 26; i++)
array[i] = int.Parse(sample[i].ToString());