получить значение между двумя символами в строке - PullRequest
1 голос
/ 16 января 2012

Мне нужно значение между двумя символами в строке. Значения находятся между {и}.Иногда может быть более 1 случая.

  var = split("this {is}  a {test}","{")
 var = split("this {is}  a {test}","}")

1 Ответ

3 голосов
/ 16 января 2012

Я не верю, что разделение строки будет решением, поскольку вам нужно знать положение символа, разделяющего вашу строку.

Поэтому я даю вам два решения

Решение # 1

Регулярное выражение

Прежде всего вам необходимо добавить ссылку на Регулярное выражение VBA.Tool -> References & Microsoft VBScript Regular Expression 5.5

Код

Sub Test1()
    Dim sText As String

    Dim oRegExp As RegExp
    Dim oMatches As MatchCollection

    sText = "this {is}  a {test}"

    Set oRegExp = New RegExp

    With oRegExp
        oRegExp.IgnoreCase = True
        oRegExp.Pattern = "{([^\}]+)"
        oRegExp.Global = True
    End With

    Set oMatches = oRegExp.Execute(sText)

    For Each Text In oMatches
        Debug.Print Mid(Text, 2, Len(Text))
    Next
End Sub

Решение # 2

Линейный поиск

Код

Sub Test2()
    Dim bIsBetween As Boolean

    Dim iLength As Integer

    Dim sText As String
    Dim sToken As String

    bIsBetween = False

    sToken = ""
    sText = "this {is}  a {test}"

    iLength = Len(sText) - 1

    For I = 1 To iLength
        Dim chr As String
        Dim nextChr As String

        chr = Mid(sText, I, 1)
        nextChr = Mid(sText, I + 1, 1)

        If (chr = "{") Then
            bIsBetween = True
        End If

        If (nextChr = "}") Then
            bIsBetween = False
        End If

        If (bIsBetween = True) Then
            sToken = sToken & nextChr
        Else
            If (Len(sToken) > 0) Then
                Debug.Print sToken
                sToken = ""
            End If
        End If
    Next I
End Sub
...