2013-03-01 63 views
0

嘗試寫入某些內容以從文本文件中檢索數據,但數據格式只出現在文件的一小部分內。目前,我正在使用下面的代碼,通過讀取和存儲標題標籤來查找文件中的部分,然後拆分並在列表中存儲必要的數據。該文件確實有更多的標題,但現在這個是我最關心的問題。解析問題C#

當僅對數據使用簡單的測試文件時,第二個if語句中的代碼自行正常工作,並正確存儲數據。但是,當我然後嘗試在解析數據之前通讀文件頭時,我收到錯誤,指出字符串格式不正確。

if (line.StartsWith("[")) 
{ 
    section = line.Trim(); 
    MessageBox.Show(section); 

} 

if (section.Contains("HRData")) 
{ 
    string[] items = line.Split('\t'); 
    int myInteger = int.Parse(items[0]); 
    BPMData.Add(myInteger); 
    BPMavg += myInteger; 
    myInteger = int.Parse(items[1]); 
    myInteger = myInteger/10; 
    SpeedData.Add(myInteger); 
    Speedavg += myInteger; 
    myInteger = int.Parse(items[2]); 
    CadenceData.Add(myInteger); 
    myInteger = int.Parse(items[3]); 
    AltitudeData.Add(myInteger); 
    myInteger = int.Parse(items[4]); 
    PowerData.Add(myInteger); 
    Poweravg += myInteger; 
} 

我正在使用MessageBox來簡單地顯示自己通過文件運行的程序。以下是來自相關文件的一小部分摘錄。我只是不確定如何解決這個問題,儘管它可能正在盯着我。

任何建議,你可以給予很大。

[HRData] 
107 129 0 -19 0 50 
+0

當你得到不正確的格式消息(我是從'Int.Parse'承擔),輸入行看起來像什麼?您的'[HRData]'部分之後是否有格式不正確的行? – 2013-03-01 15:33:30

+1

[使用調試器](http://www.dotnetperls.com/debugging),查看「items」的內容是什麼樣子的 – 2013-03-01 15:33:44

+0

你得到的錯誤是什麼?在哪行代碼?調試器告訴你相關變量的值是什麼? – millimoose 2013-03-01 15:33:52

回答

2

section包含[HRData],所以你想讀和解析下一行。

+0

我只是想讓它看看下一行,然後在給出錯誤「對象引用未設置爲對象的實例」之前,它會讀取第一行數據。當單擊錯誤消息時,該表已更新第一行數據。 – Sokudan 2013-03-01 15:58:15

+0

錯誤發生在哪裏?你現在只使用一行數據嗎? – Patrik 2013-03-01 16:05:50

+0

明白了,只需稍稍移動變量,現在就可以正常工作。 – Sokudan 2013-03-01 16:14:00

0

如果你使用一個for循環或一個foreach,代替使用這是你的第一個if語句:

if (line.StartsWith("[")) 
{ 
    section = line.Trim(); 
    MessageBox.Show(section); 
    continue; 
}