0

我有一个管道分隔文件,其中包含多个不同的扁平数据行。

我想根据数据中的第一个字段进行拆分,以便最终得到两个数据文件(一个包含我选择的数据,另一个包含剩余数据)

例如

标志|随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1|随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG2|随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1|随机数据|随机数据|随机数据|随机数据|随机数据|随机数据|

因此,带有 FLAG1 的所有数据都将保存在一个文件中,然后其余的(FLAG2)将保存在单独的文件中。

到目前为止,我有这个:

Imports System
Imports System.IO

Public Class Form1

    Dim c As Integer

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim Tr As IO.TextReader = System.IO.File.OpenText("C:\Users\gmck\Desktop\TIG DATA\test_1")
        For c As Integer = 0 To 1500

        Next

        If c = 0 Then
            Dim MyFileLine As String = Split(Tr.ReadToEnd(), vbCrLf)(c) & vbCrLf
            Tr.Close()

            Dim TW As System.IO.TextWriter
            'Create a Text file and load it into the TextWriter 
            TW = System.IO.File.CreateText("C:\Users\gmck\Desktop\TIG DATA\test_NEW")
            TW.WriteLine(MyFileLine)
            'Flush the text to the file 
            TW.Flush()
            'Close the File 
            TW.Close()
        End If
    End Sub
End Class

它取出第一条记录并将其放入一个新文件中。我想不出如何让它提取特定标志的所有记录。

为任何帮助欢呼。

天然气

4

1 回答 1

0

试试这个:首先它读取文件拆分vbcrlf以获取文件中的所有行。

然后它遍历行集合,检查它们是以“FLAG1”还是“FLAG2”开头。根据这种情况,它会写入第一个或第二个文件。

Private Sub Read()
    Dim Tr As IO.TextReader = System.IO.File.OpenText("f:\input.txt")

    Dim rows As String() = Tr.ReadToEnd().Split(vbCrLf)
    Tr.Close()

    Dim TW1 As System.IO.TextWriter
    TW1 = System.IO.File.CreateText("f:\output_1.txt")

    Dim TW2 As System.IO.TextWriter
    TW2 = System.IO.File.CreateText("f:\output_2.txt")

    For Each row As String In rows
        row = row.Trim
        If row.StartsWith("FLAG1") Then
            TW1.WriteLine(row)
        End If

        If row.StartsWith("FLAG2") Then
            TW2.WriteLine(row)
        End If
    Next

    TW1.Flush()
    TW1.Close()

    TW2.Flush()
    TW2.Close()
End Sub
于 2013-05-24T22:25:43.553 回答