У меня есть 2 файла, один index.html, который больше похож на шаблон и выводит индексный файл, который является новым файлом. первый индексный файл содержит ## 1, ## 2 .... ## 24 внутри него, и я хочу, чтобы те были заменены некоторыми ссылками, которые я предоставляю в текстовом файле.VB.NET Multiple Replace in Text File
Позвольте мне объяснить мой код. Сначала я создаю свой выходной файл. Я объявляю массив строк, содержащий ссылки, которые заменят ## 1 .... ## 24. i цикл 24 раза, чтобы заменить все ## ссылками, предоставленными из allLines. В конечном файле он заменяет только некоторые из ## и не все
Моя форма выглядит следующим образом https://s32.postimg.org/6h3ug8s7p/Untitled.png
Проблема в том, что оно не заменяет все ссылки, он заменяет только некоторые из них, и это действительно странно ,
IO.File.Create(TextBox3.Text).Dispose()
Dim allLines As String() = System.IO.File.ReadAllLines(TextBox1.Text)
For c As Integer = 1 To 24 Step 1
My.Computer.FileSystem.WriteAllText(TextBox3.Text, My.Computer.FileSystem.ReadAllText(TextBox2.Text).Replace("##" & c, allLines(c - 1)), True)
Next
Есть ли у него какие-либо точные вопросы о предметах, которые не были заменены? Это, например, всегда не заменяет первый файл/последний файл и т. Д.? Или это совершенно случайно? Также вы можете проверить использование точки останова, если массив содержит все элементы правильно? –
Это не совсем случайный ... он заменяет первый, затем 10-й 11-й .... 20-й. я проведу массив далее –
Вместо того, чтобы постоянно читать и записывать файл в цикле, сначала нужно прочитать весь текст в строку, выполнить все свои замены и затем записать его один раз. Вы сохраняете перезапись файла, отмеченного «TextBox3.Text» заменой * single * из файла TextBox2. Я предполагаю, что вы видите только «окончательную» замену. 'Dim sb как новый StringBuilder (File.ReadAllText (TextBox3.Text))/Для i = от 1 до 24/sb.Replace (" ## "& c, allLines (c-1))/Next i' Затем, наконец,' File .WriteAllText (TextBox3.Text, sb.ToString()) ' – pinkfloydx33