Правильный способ разбора текстового файла - PullRequest
0 голосов
/ 12 января 2012

У меня есть текстовый файл, который идет каким-то предопределенным способом. У меня нет ничего похожего на xsd, но шаблон можно увидеть.

например, это выглядит примерно так:

[MyFIRSTPARAGRAPH]
NUM1 NUM2 NUM3 NUM4 NUM5 NUM6 NUM7 NUM8 NUM9 NUM10 NUM11
1 1 0.000 0.000 0.000 0 1 1 0 0 ""
2 2 22.800 0.000 0.000 0 1 1 0 0 ""
3 3 45.600 0.000 0.000 0 1 1 0 0 ""
4 4 68.400 0.000 0.000 0 1 1 0 0 ""
5 5 91.200 0.000 0.000 0 1 1 0 0 ""
6 6 0.000 32.800 0.000 0 1 1 0 0 ""
7 7 22.800 32.800 0.000 0 1 1 0 0 ""
8 8 45.600 32.800 0.000 0 1 1 0 0 ""
9 9 68.400 32.800 0.000 0 1 1 0 0 ""
10 10 91.200 32.800 0.000 0 1 1 0 0 "" 

Много абзацев, разделенных пробелами.

Любое предположение, что лучше всего разбирать файлы, как это, и извлекать значения из текста.

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Моим самым первым предположением было бы сделать что-то вроде этого:

using(var reader = GetStreamReader())
{
    bool justReadATag = false;
    string line = string.Empty;

    while((line = reader.ReadLine()) != null)
    {
        if(IsTag(line)) 
        {
            // do some work with the paragraph tag
            justReadATag = true;
        }else{
            string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            if(justReadATag) 
            {
                // do some work with the column names
                justReadATag = false;    
            }else
            {
                // do some work with the cell values
            }
        }
    }
}
0 голосов
/ 12 января 2012

Я бы предложил прочитать весь файл, используя метод File.ReadAllLines. Теперь вы можете перебирать все строки одну за другой. Затем для каждой строки используйте String.Split(' '), чтобы получить значения, разделенные пробелом в строке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...