C# - 将文件读入列表并按分隔符拆分

C# - Reading a file to a list and splitting on a delimiter

我有一个文本文件,我需要从中提取单个值。这方面的一个例子是:

Name: John Doe
Key Length: 3
a90nm84ang9834n
90v84jgseidfrlg
f39048s9ipu4sdd
Random: true

我需要我的输出是这样的:

Visitor: John Doe
Key Value: a90nm84ang9834n90v84jgseidfrlgf39048s9ipu4sdd

现在,我正在将文件读入列表并单独调用值,但这不允许我重命名字符串的第一个值(例如 Name -> Visitor)。

我真正的问题是在将文件读入列表后,是否可以进一步将这些行中的每一行从分隔符中分离出来并引用该对中的 1 部分?

编辑 - 这是我正在使用的代码示例,但它没有执行我想要执行的操作:

string path = @"C:\temp\foo.txt";
List<string> lines = File.ReadAllLines(path).ToList();

Console.WriteLine("Filename: " + path);
Console.WriteLine("Length: " + lines[1]); //This outputs "Length: Key Length: 3"

假设您的数据都采用相同的格式...像这样怎么样:

private static void ParseDataFile(string dataFile)
{
    var lines = File.ReadAllLines(dataFile);

    for (var i = 0; i < lines.Length; i++)
    {
        if (lines[i].Contains("Name"))
        {
            Console.WriteLine($"Visitor: {lines[i].Remove(0, 6)}");
            var keyLineCount = Convert.ToInt32(lines[++i].Remove(0, 12));
            string key = string.Empty;

            for (var j = 0; j < keyLineCount; j++)
            {
                key += lines[++i];
            }

            i++;
            Console.WriteLine($"Key Value: {key}");
        }
    }
}

回答您的具体问题:是的,可以在不同时间拆分不同字符的字符串:

string s = "1234567890";
string[] parts1 = s.Split('5'); // 2 parts "1234" and "67890"
string[] parts2 = parts1[1].Split('7','9'); // 3 parts "6", "8" and "0"

等等