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

时间:2015-09-07 07:58:25

标签: c# regex string

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

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 XXX;410;PORTIERNIA WEJŚCIE;0;Domyślna;16;UMYSŁOWY;0;WEJŚCIE;4400F2E180;292073693568;

1 个答案:

答案 0 :(得分:0)

首先,您应该删除此行,因为它没有意义:

 row.Split('\n');

然后将拆分代码分成两部分:

  

var wiersz = row.Split(';')[1] + row.Split(';')[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];
}

这种方式Split()只运行一次,你应该得到正确的结果。您可以执行的故障排除是迭代splitString数组并输出结果:

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

您还可以在代码中放置断点以确保它甚至可以达到您的拆分字符串代码 - 在正确设置的过程中是否还有所有检查?