C# - 读取文件到列表和分裂的分隔符

问题描述 投票:-3回答:1

我有我需要从拉个体值的文本文件。这样的一个例子是:

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

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

Visitor: John Doe
Key Value: a90nm84ang9834n90v84jgseidfrlgf39048s9ipu4sdd

现在,我把文件读入一个列表,并呼吁独立的价值,但是,这并不让我重新命名字符串的第一个值(例如名称 - >观众)。

我的真正的问题是在文件被读入该列表之后,是有可能进一步分裂各那些线的断开的定界符的并引用对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"
c# .net text-parsing
1个回答
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"

等等

© www.soinside.com 2019 - 2024. All rights reserved.