我有很多结构相同的文本文件
它们每个部分的数目都未知
所有节的名称都是已知的。它们存储为数组。
Dim alpha() As String = {"Section 1", "Section 2", "Section 3"}
这些部分只是纯文本,没有任何符号可帮助识别。但是它们下面的文本具有各种符号和文本。
: 例如。
第1部分
有很多带有符号,数字和换行符的文本。
第2部分
有很多带有符号,数字和换行符的文本。
第3部分
有很多带有符号,数字和换行符的文本。
现在。正则表达式无法解决此问题,因为每个部分都不相同,并且无法匹配任何内容。 我想将每个部分保存到不同的文件中。如果您可以帮助我弄清楚如何获取,也许可以为每个不同文件的每个部分提供一个数组,我可以节省一部分。 有什么想法吗?
答案 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节的一个由行字符串组成的数组,依此类推。