2010-03-19 81 views
0

我正試圖解析由LGA Tracon生成的文件,該文件列出了給定時間範圍內飛機的位置數據。感興趣的數據從跟蹤數據開始,以SST結束,每個文件有數千個條目。生成文件Common ARTS的系統格式非常嚴格,我們可以期望列間距一致。任何幫助將不勝感激。如何解析列數據?

感謝,

這裏是保存準確的格式 alt text http://www.schedulebook.com/Temp/N90.gif

這裏是一個縮小文本文件的圖像。

link text

+0

你只想要的位置? – 2010-03-19 17:23:42

+0

格式不理想 - 您確定系統無法以更易於機器讀取的格式輸出嗎? – 2010-03-19 17:28:41

+0

對不起,系統老舊,不夠靈活。這是他們能做的唯一輸出。 – user38349 2010-03-20 01:13:29

回答

1

如果您選擇忽略FileHelpers的jball的建議(這看起來不錯)我建議逐行讀取文件中的行,直至找到一個符合TRACKING DATA

開始然後在接下來的11線拉成一個數組,並開始與.instr()

操縱可能發現這個解決方案比使用其他庫作爲手工打造的代碼將直接針對手頭的問題更快。沒有使用FileHelpers我不知道它的速度開銷。

我已經寫了很多文件在過去的解析之前(有趣的是還具有基於旅行文本文件),並發現它非常快/高效

2

有很多方法來解決這個問題,但像FileHelpers免費圖書館已經解決了這一點。他們甚至已經有一個帶有VB代碼的Quick Start for Fixed Length files

如果您無法使用外部庫,則可以從內置的.NET TextFieldParser開始。與FileHelpers相比,您需要做更多的工作,但它很好地處理了固定寬度的部分。

+0

+1鏈接!我一直硬編碼像這樣的東西。 – CResults 2010-03-19 17:29:44

+0

然而,並非通過TextFieldParser確信作爲文件的格式(包括他感興趣的部分)的變化在整個並且不能被歸類爲一個標準的固定寬度的文件。 – CResults 2010-03-19 17:39:30

+0

真的,我覺得你能得到它通過選擇性的工作,雖然部分。如果外部庫不在外,您的'.instr()'建議似乎是一個好方法。 – jball 2010-03-19 17:52:04