如何将一个长输入文本框控件分割成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个,但实际上这并不重要。

如何将一个长输入文本框控件分割成int数组

第二个代码段差不多完成了(假设您想要一个数字数组,并且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());