现在尝试创建一些代码,从 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);
}
}
但结果 -
我犯了错误?
答案 0 :(得分:5)
l.Split(',')
的调用产生string
s数组,即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);