一次将一个文本框中的多个数字添加到数组中

Add multiple numbers from one text box to an array at one time

提问人:user2700797 提问时间:11/12/2023 最后编辑:Peppermintologyuser2700797 更新时间:11/12/2023 访问量:44

问:

我正在尝试从文本框中获取多个数字,例如:12 56 35,然后一次将这些数字添加到数组中。

我试图从文本框中获取文本并将其解析为 int,然后将其添加到数组中,但它不起作用。如果我在文本框中有一个数字,它将起作用,但一旦我添加多个数字,它就不起作用了。

namespace Time4
{
    public partial class Form1 : Form
    {
        int[] numbers = new int[10];
        int num = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i <= 9; i++)
            {
                if (int.TryParse(textBox1.Text, out numbers[i]))
                {
                    num = numbers[i];
                    richTextBox1.Text += num * 4 + "\n";
                    break;

                }
            }
        }
    }
}

works with a singular number

Doesn't work with multiple numbers

“C# 数组” 文本框

评论

0赞 Peppermintology 11/12/2023
查看 String.Split() 方法,看看它是否适合您的要求。

答:

1赞 Joe Tüscher 11/12/2023 #1

尝试这样的事情:

        var input = "12 23 34";
        string[] stringNumbers = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
        foreach (var str in stringNumbers)
        {
            if (int.TryParse(str, out int parsedInput))
            {
                // Add them to your array
            }
        }

在这里,您将输入字符串按空格拆分,但您也可以将其更改为逗号并替换为 .' '','

0赞 Andrew Morton 11/12/2023 #2

如果你想要更多的通用性,在你想要的数字之间可能存在哪些字符,你可以使用正则表达式拆分数据,也许是这样的:

using System.Text.RegularExpressions;

var q = "12 34   67 A \t54 1e4 -99\r\n+87";
var nn = new List<int>();
var re = new Regex(@"\s+");

int n = 0;

foreach (string _ in re.Split(q).Where(s => int.TryParse(s, out n))) {
    nn.Add(n);
}

Console.WriteLine(string.Join(", ", nn));

输出:

12, 34, 67, 54, -99, 87

中的 告诉它你不关心实际生成的字符串——数字将通过变量 ._foreachn

如果找到 10 个整数很重要,则可以在循环后添加检查。nn.Count == 10