C # - чтение файла в список и разбиение на разделитель - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть текстовый файл, из которого мне нужно получить отдельные значения.Примером этого является:

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"

1 Ответ

0 голосов
/ 08 февраля 2019

Предполагая, что все ваши данные отформатированы одинаково ... как примерно так:

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"

и т. Д.

...