Вы должны объявить переменную K
вне функции, чтобы значение сохранялось между вызовами функций.
Dim K As String = ""
Sub Main
' This is to simulate stream of data to pass to ReceivedText function
Dim arr As String() = {"0", "12", "34567", "8901", "2", "34", "56", "7890", "123", "456"}
For Each data As String In arr
ReceivedText(data)
Next
Console.WriteLine("End of data stream. Remaining chars (Incomplete) : " & K)
End Sub
Private Sub ReceivedText(ByVal [text] As String)
Dim number As String = Regex.Replace([text], "[^0-9]", "")
K &= number ' Append [text] to K
' If K length is 5 or more
If K.Length >= 5 Then
' Get the first 5 characters and assign to J
Dim J As String = K.Substring(0, 5)
' I just print the 5-char value (J) to console.
Console.WriteLine("Completed text (5 chars) : " & J)
' Remove the first 5 characters from K
K = K.Remove(0, 5)
End If
End Sub
Я упрощаю ваш код, как указано выше.
ВЫХОД
Completed text (5 chars) : 01234
Completed text (5 chars) : 56789
Completed text (5 chars) : 01234
Completed text (5 chars) : 56789
Completed text (5 chars) : 01234
End of data stream. Remaining chars (Incomplete) : 56
Выше Remaining chars
- это не количество символов, оставшихся в K, а текст 5
и 6
.Я специально поместил дополнительные символы в поток данных, как вы можете видеть в последнем элементе массива arr
, чтобы они не были идеально в блоках по 5.