Dave Kreskowiak
С вашим кодом много проблем.
Во-первых, линия ReDim lines(v)
это совершенно не нужно. Как вы думаете, что делает эта линия? Возможно, вы захотите ознакомиться с документацией по ReDim
выяснить.
Затем вы записываете весь файл обратно на диск каждый раз, когда находите пустую строку. Это очень ненужно и вредит производительности ваших кодов. Если бы у вас был файл со 100 000 строками и 1% из них были пустыми строками, вы бы записали файл обратно на диск 1000 раз. Почему? Вам нужно сделать это только один раз.
Сканируйте все ваши строки и делайте замены, а затем вы записываете файл обратно после завершения цикла. Еще лучше, если вы не заменили ни одной строки, зачем вообще записывать файл обратно?
А что еще? Название метода, который вы используете, не имеет никакого смысла. "LabelStrings"? Что это значит?
Кроме того, вы используете "глобальные" переменные вместо передачи имени файла в метод. Это делает ваш код более сложным для отладки и менее универсальным.
Ваш код жестко закодирован, чтобы прочитать всего 70 строк файла. А что, если линий будет меньше? Ваш код создает исключение. А что, если линий больше? Вы уверены, что не хотите, чтобы это обрабатывало динамическое количество строк?
Наконец, ваш код выдаст исключение, если он по какой-либо причине не сможет открыть и прочитать файл. Что произойдет, если файл не существует? Вы уверены, что не хотите справиться с этой ситуацией?
Public Sub labelstrings()
Dim lines As String() = File.ReadAllLines(del.filename)
Dim v As Integer
For v = 0 To 69
If String.IsNullOrWhiteSpace(lines(v)) Then
lines(v) = "ali"
End If
Next
File.WriteAllLines(del.filename, lines)
End Sub