vb.net按节将文本文件拆分为不同的文件
我有很多具有相同结构的文本文件 它们每个都有未知数量的部分 所有部分的名称都是已知的。它们存储为一个数组vb.net按节将文本文件拆分为不同的文件,vb.net,Vb.net,我有很多具有相同结构的文本文件 它们每个都有未知数量的部分 所有部分的名称都是已知的。它们存储为一个数组 Dim alpha() As String = {"Section 1", "Section 2", "Section 3"} 这些部分只是纯文本,没有任何符号来帮助识别。但它们下面的文字有各种各样的符号和文字 : 前 第1节 有很多带有符号、数字和换行符的文本 第2节 有很多带有符号、数字和换行符的文本 第3节 有很多带有符号、数字和换行符的文本 现在。使用正则表达式无法实现这一点,因为
Dim alpha() As String = {"Section 1", "Section 2", "Section 3"}
这些部分只是纯文本,没有任何符号来帮助识别。但它们下面的文字有各种各样的符号和文字
:
前
第1节
有很多带有符号、数字和换行符的文本
第2节
有很多带有符号、数字和换行符的文本
第3节
有很多带有符号、数字和换行符的文本
现在。使用正则表达式无法实现这一点,因为每个部分都不同,无法与任何内容匹配。
我想将每个部分保存到不同的文件中。如果你能帮我弄清楚如何获取,也许,每个不同文件的每个部分的数组,我可以做保存部分。
有什么想法吗?严格来说,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
在button.click中,事件处理程序将为您留下一个数组,数组中的每个项都是字符串数组,等于每个节中的文本,而不包含节头。因此,
sectionsPostSpliting(0)
将是第1节的单行字符串数组,依此类推。请添加文本文件的示例,以及您希望如何将其拆分为行、字等。这是任何示例。一个已知的标题,然后是一个未知的行数,其中包含未知的文本。用符号发布文本,这样我们就可以知道要使用什么分隔符
sectionsPostSplitting = SplitCompleteText(completeFile)