C# 拆分后如何从字符串中获取第二或第三个子字符串?

C# 拆分后如何从字符串中获取第二或第三个子字符串?,c#,regex,string,C#,Regex,String,我正在尝试从string.Split之后的string中获取第二或第三个子字符串。 这是我的代码: string[] rows; OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rows = File.ReadAllLines(ofd.FileName); foreach (var row in rows)

我正在尝试从string.Split之后的string中获取第二或第三个子字符串。 这是我的代码:

string[] rows;
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    rows = File.ReadAllLines(ofd.FileName);

    foreach (var row in rows)
    {
        row.Split('\n');
        if (!row.StartsWith("#COLUMN"))
        {           
            if (row.Contains("Data") || row.Contains("Godzina"))
            {
                var wiersz = row.Split(';')[1] + row.Split(';')[2];
                richTextBox1.Text += wiersz;
            }                
        }
    }                
}
wiersz在那之后什么都没有

这是我试图拆分的行,并从中获取子字符串:


27590;2012-12-07;14:44:20;1.[001]:Przyznanie dostępu;136;2711;三十、 ;;;;XXX XXX;410;波蒂尔尼亚·韦杰西;0;多米尔纳;16;乌米斯奥维;0;WEJŚCIE;4400F2E180;292073693568;

首先,您可能应该删除这一行,因为它没有意义:

 row.Split('\n');
然后将拆分代码拆分为两部分:

var wiersz=行。拆分“;”[1] +行。拆分“;”[2];

变成

var splitString = row.Split(';');
if (splitString == null || splitString.Length == 0)
{
    Console.WriteLine("Split string is null or empty!");
}
else
{
    var wiersz = splitString[1] + splitString[2];
}
这样分割只运行一次,应该会得到正确的结果。可以执行的故障排除操作是迭代splitString数组并输出结果:

foreach (string s in splitString)
{
    Console.WriteLine(s);
}

您还可以在代码中设置断点,以确保它甚至可以到达拆分字符串代码-您的所有检查都正确设置了吗?

问题出在哪里?请解释一下你所说的wiersz在那之后什么都不包含。如果要稍后访问此变量,请先声明它。删除行。拆分“\n”;。这完全没有意义您的示例字符串不包含数据或Godzina,因此该行的var wiersz部分将被跳过。如果row.ContainsData | | row.ContainsGodzina,请删除,或者查找其他锚字符串。否则,使用。它回答了您的问题吗?出现错误:索引超出了arraySee我编辑的答案的范围,请查看控制台中的错误日志。您还可以尝试打印以下行的内容:Console.WriteLinerow;为了更好地了解你正在看的和应该检查的内容。