C# 通过数组的结尾指定变量

C# 通过数组的结尾指定变量,c#,arrays,loops,split,delimiter,C#,Arrays,Loops,Split,Delimiter,我试图找出是否有办法将我的最后一个变量(var4)分配给[2]之后的数组的其余部分 static void Main(string[] args) { string var1; string var2; string var3; string var4; string readContents; using (StreamReader streamReader = new StreamReader(@"File.txt")) {

我试图找出是否有办法将我的最后一个变量(
var4
)分配给
[2]
之后的数组的其余部分

static void Main(string[] args)
{
    string var1;
    string var2;
    string var3;
    string var4;

    string readContents;
    using (StreamReader streamReader = new StreamReader(@"File.txt"))
    {
        readContents = streamReader.ReadToEnd();
        string[] lines = readContents.Split('\r');
        foreach (string s in lines)
        {
            string[] lines2 = s.Split('\t');
            var1 = lines2[0];
            var2 = lines2[1];
            var3 = lines2[2];
            var4 = lines2[3];
            Console.WriteLine("Var1: {0}\nVar2: {1}\nVar3: {2}\nVar4: {3}", var1, var2, var3, var4);
            Console.ReadLine();    
        }
    }
}
每个变量由一个选项卡分隔,因此拆分工作正常。但是在IP地址之后,我希望在
var4
中得到整个错误消息(包括选项卡,并运行到数组的末尾)

文件内容:

2015-04-19 00:00:00  HostName.ErrorLevel    IP Address  "Error Message"
2015-04-19 00:00:00  HostName.ErrorLevel    IP Address  "Error Message"
2015-04-19 00:00:01  HostName.ErrorLevel    IP Address  "Error Message"

嗯,你可以试试这样的

var4 = String.Join(" ", lines2.Skip(3));

这将使用空格作为分隔符连接
lines2
数组中索引大于2的所有条目(即跳过前三个元素)。

您可以尝试以下操作

var4 = String.Join(" ", lines2.Skip(3));

这将使用空格作为分隔符连接
lines2
数组中索引大于2(即跳过前三个元素)的所有条目。

Split
有一个可选的附加参数
int count
。如果您向它传递一个数字,它将不会将字符串拆分为超过那么多的元素,将字符串的其余部分放入最后一个元素。

split
具有一个可选的附加参数
int count
。如果您给它传递一个数字,它不会将字符串拆分为超过那么多的元素,将字符串的其余部分放入最后一个元素