根据文本和位置VB将文本字符串解析为字段

时间:2014-02-15 07:02:40

标签: vb.net

我有一个由空格分隔的字符串.text文件。当我将它带入Excel或Access时,这将是一个明显的解析解决方案,但由于字符串大小不同,因此字段将不正确。我希望能在这里找到一些帮助,因为我对此并不十分熟悉。

这是字符串的示例部分:

259998887575 15 00:14:38 C33 0:14:42 T33 00:14:52 00:14:58

202224446898 33 00:16:24 B23 00:17:00 C31 00:17:15 T31 00:19:30 C04 00:17:15 T28 00:19:30 00:19:32

带冒号的数字是时间戳,字母代码(T / C / B)都代表不同的字段类型。我的问题是字符串中可以列出任意数量的C和T时间戳,并且可能有也可能没有B时间戳。

我希望结果显示4个字段......第一个,第一个c时间戳,最后一个t时间戳和最后一个时间戳(加粗时间戳)。所有其他信息都可以忽略不计。由于记录的数量,我想使用VB循环。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

编辑:您似乎想要将日期分成类型,由每个字母前面的位确定 您可以使用Strings.Split方法来划分空格处的行。然后使用Date.TryParse方法检查哪些部分是日期(或时间,它是相同的)。然后选择上一部分的第一个字母,并将日期分类到各自的列表中。

    Dim s As String = "202224446898 33 00:16:24 B23 00:17:00 C31 00:17:15 T31 00:19:30 C04 00:17:15 T28 00:19:30 00:19:32"
    Dim parts() As String = Strings.Split(s, " ") 'Split the string at all spaces

    'Create lists of Date, one list for all dates, one list for each Letter
    Dim Tdates As New List(Of Date) 'This stores converted dates
    Dim Cdates As New List(Of Date) 'This stores converted dates
    Dim Bdates As New List(Of Date) 'This stores converted dates
    Dim Alldates As New List(Of Date) 'This stores converted dates

    For i = 0 To parts.Count - 1 'Iterate through all parts
        Dim ThisDate As Date
        If Date.TryParse(parts(i), ThisDate) = True Then 'This tries to parse the current part as a date, returns True if the part is a date
            Alldates.Add(ThisDate) 'You want to store all dates in this list
            If i > 0 AndAlso parts(i - 1).Length > 0 Then
                Dim PrevPartsFirstLetter As String = parts(i - 1)(0) 'Crop the first letter of the previous part
                Select Case PrevPartsFirstLetter
                    Case "T" : Tdates.Add(ThisDate)
                    Case "C" : Cdates.Add(ThisDate)
                    Case "B" : Bdates.Add(ThisDate)
                End Select
            End If
        End If
    Next
    'You can now select the parts you want from the lists

Tdates-List包含所有在他们之前有T物品的日期,依此类推。 AllDates-List包含该行中的所有日期。