c#windows应用程序数组和字符串拆分

本文关键字:字符串 拆分 数组 应用程序 c#windows | 更新日期: 2023-09-27 18:20:13

我正在尝试在C#中拆分字符串,并使用以下代码:

string str = Encoding.ASCII.GetString(e.Data);
string[] words = str.Split(' '.ToArray());

但我在Split(' '.ToArray());上有一个错误,我想分割文本并将其保存为数组,例如:

string input = '1 2 3 4 5 6 7';

阵列为:

string[] array = input.split(' ');
output:
array[0] = 1
array[1] = 2 ....

我试过这种方法,但它们不起作用,我不知道为什么。

来自Exception的消息是:"index was outside the bounds of the array"

这是所有的代码:

void _spManager_NewSerialDataRecieved(object sender, SerialDataEventArgs e)
        {
            if (this.InvokeRequired)
            {
                // Using this.Invoke causes deadlock when closing serial port, and BeginInvoke is good practice anyway.
                this.BeginInvoke(new EventHandler<SerialDataEventArgs>(_spManager_NewSerialDataRecieved), new object[] { sender, e });
                return;
            }
            int maxTextLength = 1000; // maximum text length in text box
            if (tbData.TextLength > maxTextLength)
                tbData.Text = tbData.Text.Remove(0, tbData.TextLength - maxTextLength);
            // This application is connected to a GPS sending ASCCI characters, so data is converted to text
            string str = Encoding.ASCII.GetString(e.Data);
            //tbData.AppendText(str);
            //tbData.ScrollToCaret();
            string[] words = str.Split();
            try
            {
                tbData.Text = words[1].ToString();
            }
            catch (Exception ex)
            { 
                MessageBox.Show(ex.Message);
            }
            richD.AppendText(str);
            richD.ScrollToCaret();
        }

希望你能帮忙。或者,如果您有更好的想法,可以将接收到的数据插入datagridview

c#windows应用程序数组和字符串拆分

解决方案就在您的问题中。

在给定的代码中,您试图在不指定参数的情况下拆分字符串。

string[] words = str.Split();

这不会将字符串拆分为多个部分。它将只在数组中创建一个元素。当您尝试访问word数组中索引1中的第二个元素时。

tbData.Text = words[1].ToString();

这将给出一个错误,即索引1上没有元素-数组中的元素计数仅为索引0处的1。

因此,您可以从Index 0中获取字符串,也可以在Split()函数中指定参数。

string[] words = str.Split(' ');