vb.net按部分将文本文件拆分为不同的文件

时间:2018-11-25 03:27:55

标签: vb.net

我有很多结构相同的文本文件

它们每个部分的数目都未知

所有节的名称都是已知的。它们存储为数组。

Dim alpha() As String = {"Section 1", "Section 2", "Section 3"}

这些部分只是纯文本,没有任何符号可帮助识别。但是它们下面的文本具有各种符号和文本。

: 例如。

第1部分

有很多带有符号,数字和换行符的文本。

第2部分

有很多带有符号,数字和换行符的文本。

第3部分

有很多带有符号,数字和换行符的文本。

现在。正则表达式无法解决此问题,因为每个部分都不相同,并且无法匹配任何内容。 我想将每个部分保存到不同的文件中。如果您可以帮助我弄清楚如何获取,也许可以为每个不同文件的每个部分提供一个数组,我可以节省一部分。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

严格来说,Stackoverflow不是代码编写服务,但我无法抗拒

下面的代码将满足您的要求。

Dim fn As String = "K:\sectiontest.txt"
Dim completeFile As String()
Dim sectionsPostSplitting As String()()

Private Function GetSectionIndexes() As List(Of Integer)
    Dim SectionIndexes As New List(Of Integer)
    For i As Integer = 0 To completeFile.Count - 1
        If completeFile(i).StartsWith("Section") Then
            SectionIndexes.Add(i)
        End If
    Next
    Return SectionIndexes
End Function

Private Function GetSectionText(i As Integer, temptxtarray As String()) As String()
    Dim sectionText As New List(Of String)
    Dim j As Integer = i
    j += 1
    While (j < temptxtarray.Length - 1) And (Not temptxtarray(j).StartsWith("Section"))
        sectionText.Add(temptxtarray(j))
        j += 1
    End While
    Return sectionText.ToArray
End Function

Private Function SplitCompleteText(txt As String()) As String()()
    Dim sectionsText As New List(Of String())
    Dim sectionIndexes As List(Of Integer) = GetSectionIndexes()
    For i As Integer = 0 To sectionIndexes.Count - 1
        sectionsText.Add(GetSectionText(sectionIndexes(i), completeFile))
    Next
    Return sectionsText.ToArray
End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    completeFile = File.ReadAllLines(fn)
    sectionsPostSplitting = SplitCompleteText(completeFile)
End Sub

该行。

sectionsPostSplitting = SplitCompleteText(completeFile)
在button.click事件处理程序中的

将为您提供一个数组,该数组中的每个项目都是一个字符串数组,该字符串数组等于每个节中没有节标题的文本。因此sectionsPostSplitting(0)将是第1节的一个由行字符串组成的数组,依此类推。