如何将在 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());
我刚开始学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());