2

现在尝试创建一些代码,从CSV文件中获取一个字符串并将其与一些标准进行比较。如果此字符串通过标准,则将其分成 4 部分 - 将每个部分放入数组中,然后从中获取一些新值TextBox并进行更改。

目前我在点,当需要划分选定的字符串。准备一些代码,而不是得到分割的数组只得到System.string[]

代码

 try
        {
            FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite); 
            StreamReader sr = new StreamReader(fs); //open file for reading
            string[] line = sr.ReadToEnd().Split(new string[] { Environment.NewLine }, 
                                             StringSplitOptions.None); //read file to the end an divide it 
            sr.Close(); //close stream
            foreach (var l in line) //check each line for criteria
            {
                if (l.Contains(dateTimePicker1.Text.ToString() + eventNameUpdateTextBox.Text.ToString()))
                {
                    try
                    {
                        string[] temp = { "", "", "", "", };// i always have just 4 part of string
                        for (int i = 0; i<3; i++)
                        {
                            updatedTtextBox.Text = temp[i] = l.Split(',').ToString(); //try to divide it
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

但结果——

调试

我在哪里犯错?

4

1 回答 1

5

的调用l.Split(',')产生一个strings 数组,即 a String[]。调用ToString()这样的数组会产生"System.String[]"- 您在输出中看到的值。

您需要在循环之前拆分,并在您通过索引前进时从拆分中选择一个元素,然后对每个部分执行您需要执行的任何操作。如果您只想将零件放入temp数组的各个元素中,也许将项目数限制为4,那么l.Split(',').Take(4).ToArray()就足够了。

奇怪的是,您updatedTtextBox.Text在循环中进行了四次替换。猜测您要完成的工作,以下是您可以尝试做的事情:

string[] temp = l.Split(',').Take(4).ToArray();
// For display purposes, you can join the data back with a different separator:
updatedTtextBox.Text = string.Join("|", temp);
于 2013-08-26T20:47:11.483 回答