VB.NET文本文件解析许多条目一行由空格分隔

时间:2016-02-02 19:06:55

标签: vb.net parsing visual-studio-2013 streamreader

并感谢您提供任何指导。

我想读取一个文本文件并使用空格作为分隔符捕获所有值,并将每个条目输入到SQL Server表的字段中。有时条目是三个字符,有时条目是四个字符。

文本文件条目示例:

  YYYY: AAA BBBB CCCC DDDD EEEE
        FFF GGG HHH III JJJ LLL

  ZZZZ: 111 2222 3333 4444 5555
        777 888 999 000 123 456

我正在使用StreamReader。我对这一切都有点新意。我非常感谢你对我的耐心。

这是最新的尝试。正是在这一点上,我意识到我不知道如何通过使用空间作为指标来拉动下一个事物而不知道如何解析整条生产线。"我一直在寻找。我似乎并没有在寻找正确的主题\命令。

Do
    Dim line As String = Streamy.ReadLine
    Dim Model As String = ""

    If line.Contains("MODEL") Then
        Dim newModelData As New ModelData
        Model = line.Substring(6, 3)
        newModelData.Model = line.Substring(6, 3)

        If newModelData.Model = "   " Then
            line.Skip(1)
        Else
            ModelDataList.Add(newModelData)
        End If
    End If

    If line.Contains("YYYY") Then
        Dim newModelData As New ModelData
        newModelData.Model = Model
        'This part below is where I realized I don't understand 
        'how to parse the line.  I've searched online, but 
        'apparently I just don't know the right topic to search for.

        newModelData.SomeModelInfo = line.Substring(23, 3)

        ModelDataList.Add(newModelData)
    End If

    Loop Until Streamy.EndOfStream
    db.BulkInsertAll(ModelDataList)
    Streamy.Close()
 End Using

结束使用     结束子

1 个答案:

答案 0 :(得分:0)

您可以使用 .Split 方法分隔由空格分隔的字符串 - 如下所示:

Dim line As String = Streamy.ReadLine
Dim lineParts() As String() = line.Split(" "c)

这里发生的是 lineParts 被声明为字符串数组, = 符号后面的代码位在空格出现的每个点都会分割字符串。

奇怪的代码 - “”c 是为了确保将“”视为char类型而不是字符串类型。

您最终得到的是一个只包含您的文字的数组。

如果在行的开头或结尾有空格,则数组中将包含空元素,其中不包含任何内容。所以我建议您也使用.Trim方法。所以你的代码现在看起来像这样:

Dim line As String = Streamy.ReadLine
line = line.Trim(" "c)
Dim lineParts() As String() = line.Split(" "c)

现在您可以通过 lineParts

的数组开始工作