Получение данных между двумя элементами
Привет, я посмотрел в интернете и просто не могу найти правильный ответ. У меня есть файлы, которые имеют и через них. Мне нужно только содержимое между этими двумя строками. Код, который у меня есть, все еще распечатывает все данные, включая строки запуска/остановки. Спасибо за вашу помощь. Максин
Dim Prefix As String Dim newMasterFilePath As String Dim masterFileName As String Dim newMasterFileName As String Dim startMark As String = "<!--#start#-->" Dim stopMark As String = "<!--#stop#-->" 'values from GUI form searchDir = txtDirectory.Text Prefix = txtBxUnique.Text For Each singleFile In allFiles If File.Exists(singleFile.FullName) Then Dim fileName = singleFile.FullName Debug.Print("file name : " & fileName) ' A backup first Dim backup As String = fileName & ".bak" File.Copy(fileName, backup, True) ' Load lines from the source file in memory Dim lines() As String = File.ReadAllLines(backup) ' Now re-create the source file and start writing lines inside a block ' Evaluate all the lines in the file. ' Set insideBlock to false Dim insideBlock As Boolean = False Using sw As StreamWriter = File.CreateText(backup) For Each line As String In lines If line = startMark Then ' start writing at the line below insideBlock = True ' Evaluate if the next line is <!Stop> ElseIf line = stopMark Then ' Stop writing insideBlock = False ElseIf insideBlock = True Then ' Write the current line in the block sw.WriteLine(line) End If Next End Using End If Next
Здесь в другой части моего кода я беру имя сущности из основного документа и заменяю его текстом между start и stop
Dim strMasterDoc = File.ReadAllText(existingMasterFilePath) Dim newMasterFileBuilder As New StringBuilder(strMasterDoc) 'Create a regex with a named capture group. Dim rx = New Regex("&" & Prefix & "_Ch(?<EntityNumber>\d+(?:-\d+)*)[;]") Dim reg1 As String reg1 = rx.ToString Debug.Write("Chapter Entity: " & reg1) Dim rxMatches = rx.Matches(strMasterDoc) For Each match As Match In rxMatches Dim entity = match.ToString 'Build the file name using the captured digits from the entity in the master file Dim entityFileName = Prefix & $"_Ch{match.Groups("EntityNumber")}.sgm" Dim entityFilePath = Path.Combine(searchDir, entityFileName) 'Check if the entity file exists and use its contents 'to replace the entity in the copy of the master file 'contained in the StringBuilder If File.Exists(entityFilePath) Then Dim entityFileContents As String = File.ReadAllText(entityFilePath) newMasterFileBuilder.Replace(entity, entityFileContents) End If Next 'write the processed contents of the master file to a different file File.WriteAllText(newMasterFilePath, newMasterFileBuilder.ToString)
Что я уже пробовал:
Я пробовал использовать StreamWriter для поиска документов и сбора данных