1
我需要一个字符串中两个字符之间的值。值在{和}之间。有时可能会有更多的发生。在字符串中的两个字符之间得到值
var = split("this {is} a {test}","{")
var = split("this {is} a {test}","}")
我需要一个字符串中两个字符之间的值。值在{和}之间。有时可能会有更多的发生。在字符串中的两个字符之间得到值
var = split("this {is} a {test}","{")
var = split("this {is} a {test}","}")
我不认为拆分字符串将是一种解决方案,因为您需要知道拆分字符串的字符的位置。
所以,我给你两个解决
首先,你需要添加引用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
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
+1使用正则表达式,很好地完成。 – Jesse 2012-01-16 18:43:02
+1,但建议您在执行前测试regexp,并在解决方案2中通过推测匹配 – brettdj 2012-01-17 03:52:28
进行循环,那么您最好使用instr函数,例如openbracepos = instr(startAt,stext,“{”)它比遍历串起你自己 – ChrisPadgham 2012-01-18 00:45:36