从此文件类型中提取数据的方法是什么?

时间:2012-05-16 17:04:04

标签: c# .net winforms parsing text

我必须从文本文件中提取时间和坐标(Easting和Northing)数据。我想循环遍历它并填充3个并行数组,其中包含所有数据,直到我到达EOF。我用XML完成了这个,但这次它有点不同。我可以补充一点,这是一个用于CC视频文件的SMI文件。我将在下面发布一个例子:

<SAMI>
<HEAD>
    <STYLE TYPE="Text/css">
    <!--
        P {margin-left: 29pt; margin-right: 29pt; font-size: 24pt; text-align: center; font-family: Tahoma; font-weight: bold; color: #FF0000; background-color: #000000;}
        .SUBTTL {Name: 'Subtitles'; Lang: en-US; SAMIType: CC;}
    -->
    </STYLE>
</HEAD>
<BODY>
    <SYNC START=0>
        <P CLASS=SUBTTL>E: 4444444 N: 4444444 Time: 13:42:07
    <SYNC START=10>
        <P CLASS=SUBTTL>E: 44444444 N: 3333330 Time: 13:42:08
    <SYNC START=1010>
        <P CLASS=SUBTTL>E: 33333333 N: 4444444 Time: 13:42:09
    <SYNC START=2010>
        <P CLASS=SUBTTL>E: 2222222 N: 3333333 Time: 13:42:10
</BODY>
</SAMI>

谢谢,凯文

1 个答案:

答案 0 :(得分:1)

在.NET Regex中使用以下模式

@"^(?:\s+<P CLASS=SUBTTL>E:)\s+(\d+)\s+N:\s+(\d+)\s+Time:\s+(\d\d:\d\d:\d\d)" 

坐标和时间将在组[1],[2],[3]

我测试了这个。

        Regex r = new Regex(pat, RegexOptions.IgnoreCase);

        // Match the regular expression pattern against a text string.
        Match m = r.Match(input);
        if (m != null)
        {
            Debug.WriteLine(m.Groups[1].Value);
            Debug.WriteLine(m.Groups[2].Value);
            Debug.WriteLine(m.Groups[3].Value);
        }