如何将在 TextBox 控件中输入的 long 拆分为 int 数组

How to split a long entered in TextBox control into int array

我刚开始学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.Parse 导致明显的类型转换错误。如何完成解析?

提前致谢

编辑 我的错,有 30 个而不是 26 个,但这实际上并不重要。

第二个片段几乎就在那里(假设您想要一个数字数组,并且 Text 属性 中只有 个数字)。

删除对 Split() 的调用,Select() 部分将遍历字符串中的每个字符。

var array = inputWindow.Text.Select(i => Convert.ToInt32(i-48)).ToArray();

你的整数只有 26 位,但你我设置的最大值是 30 for (int i = 0; i < 30; i++),26 小于 30,所以 array[i] = Int32.Parse(numbers[i]) throw OverflowException

我刚刚在控制台应用程序中执行了此操作,并且能够将数字放入数组中。我没有对每一个进行数学计算。我想你可以从那里拿走它。我还建议使用列表而不是数组,这样大小就不固定了。

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();
    }
  }
}

此代码片段可用于将 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());