#vb.net #for-loop #foreach #visual-studio-2015
#vb.net #для цикла #foreach #visual-studio-2015
Вопрос:
Я уже задавал подобный вопрос раньше, но даже с ответами я все еще не мог заставить код работать быстрее. Теперь я изменил код до того, каким он был, и ищу совета о том, как ускорить мой код.
У меня есть richtextbox, который составляет 30 тыс. строк, и мне нужно заменить блок текста, когда для каждого цикла достигает определенной строки richtextbox, которая содержит 30 тыс. строк. (Если переменные не объявлены в этом коде, это означает, что они являются глобальными переменными)
Вот мой код:
Dim counter As Integer = 0
Dim startcount As Boolean = False
Dim holdstring As String = ""
Dim completertb4 As New StringBuilder("")
Dim completertb4one As New StringBuilder("")
MsgBox(newrtb.Lines.Count,, "")
Dim counteroflines As Integer = 1
For Each line As String In newrtb.Lines
'MsgBox(counteroflines amp; "----" amp; holdstring,, "")
If line.Contains(richtextboxl0) Then
startcount = True
holdstring = vbNewLine amp; richtextbox3text
ElseIf startcount = True Then
If counter = temptextbox3count Then
startcount = False
Else
counter = 1
End If
ElseIf completertb4.ToString = "" Then
holdstring = line
Else
holdstring = line
End If
If counteroflines >= 1 And counteroflines <= 10000 Then
completertb4.Append(vbNewLine amp; holdstring amp; "----" amp; counteroflines)
Else
completertb4one.Append(vbNewLine amp; holdstring amp; "----" amp; counteroflines)
End If
counteroflines = 1
Next
Комментарии:
1. Есть ли шанс, что вы могли бы проиллюстрировать или предоставить некоторые примеры данных?
2. Я решил свою проблему, спасибо!
Ответ №1:
Вот как я сократил свой код с 08:00 секунд до 00: 01 секунды. От 8 секунд до менее секунды.
Dim counter As Integer = 0
Dim countertrue As Integer = 0
Dim countintertal As Integer = 0
Dim newrtbstrarray As String() = newrtb.Lines
Dim rtb3array As String() = richtextbox3text.Lines
For Each line As String In newrtbstrarray
If line.Contains(richtextboxl0) Then
countertrue = counter
For Each element As String In rtb3array
newrtbstrarray(countertrue) = rtb3array(countintertal)
countertrue = 1
countintertal = 1
Next
End If
counter = 1
Next