2010-03-19 78 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