2012-01-12 17 views
0

我有一個文本文件即將出現某種預定義的方式。 我沒有像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 "" 

通過空間行分隔很多段落。

任何下沉如何解析這樣的文件並從文本中提取值是什麼。

+0

這看起來像一個私人的情況下,這是怎麼回事編寫你自己的解析器?該文本看起來很容易被解析! – Shai 2012-01-12 07:33:56

回答

2

我的第一個猜測分離的值將做這樣的事情:

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

我建議使用File.ReadAllLines方法讀取完整的文件。現在你可以迭代所有的行了。然後對每行使用String.Split(' ')讓它們通過空間行