Разбор строки в VB - PullRequest
       49

Разбор строки в VB

0 голосов
/ 12 февраля 2020

Например, mystring = = 1001 *

Что я хочу сделать, так это то, что каждый раз, когда я обнаруживаю "53 54 41 52 54", он захватывает оставшиеся 3 байта. Итак, основываясь на примере моей строки выше, я хочу получить результат как показано ниже:

Когда он впервые найдет 53 54 41 52 54, он захватит 00 00 01, а затем, когда он найдет 2-е 53 54 41 52 54, он захватит 00 01 02, затем, наконец, найдя 3-го 53 54 41 52 54, он захватит 01 02 03.

Каков наилучший способ сделать это в VB?

Заранее спасибо.

Ценю ваше руководство.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Вы можете использовать регулярное выражение:

Dim r as New Regex("53 54 41 52 54 (?<b>\d\d \d\d \d\d)")

ForEach m as Match in r.Matches(mystring)
  MsgBox(m.Groups("b").Value)
Next m

Регулярное выражение будет искать нужные вам цифры, затем брать последующие 3 пары \ d цифр и записывать их в группу с именем b , который вы можете получить, как показано в l oop

0 голосов
/ 12 февраля 2020

Альтернативный вариант (менее аккуратный, но, возможно, легче читаемый, если он не знаком с Регулярными выражениями), будет:

    Const myString As String = "53 54 41 52 54 00 00 01 53 54 41 52 54 00 01 02 53 54 41 52 54 01 02 03"
    Const myMatch As String = "53 54 41 52 54"
    Dim Results As New List(Of String)
    Dim i As Integer = 0
    Do While i >= 0 AndAlso i < myString.Length
        i = myString.IndexOf(myMatch, i)
        If i >= 0 Then
            Results.Add(myString.Substring(i + 15, 8))
            i += 9
        End If
    Loop
...