我正在尝试创建一个函数,该函数将采用可能超过多行的字符串,例如:
"declare notThese
declare orThis
hello = $notThis@butthis$
butNot= $ButNotThis$
andDefNot = getDate()"
搜索它,从
等所有部分中提取{string1}
${whatever}@{string1}$
然后将它们推入阵列。
我如何存档?是通过正则表达式还是比它更简单?
如果字符串在上面的多行上呈现也会有所不同吗?
答案 0 :(得分:2)
你可以通过正则表达式来完成。在这种情况下,多线与否不起作用。
Function ExtractStrings(input)
Dim re, matches, match, i, output
Set re = new RegExp
re.Pattern = "\$[^@]+@([^$]+)\$"
re.Global = True
Set matches = re.Execute(input)
ReDim output(matches.Count - 1)
i = 0
For Each match in matches
output(i) = match.SubMatches(0)
i = i + 1
Next
ExtractStrings = output
End Function
答案 1 :(得分:0)
您可以通过“拆分”功能来做到这一点:
Dim sLinesOfText As String
sLinesOfText = "Insert multiple lines of text here"
Dim aLines() As String
Dim iLine As Integer
iLine = 0
aLines = Split(sLinesOfText, vbCrLf, , vbTextCompare)
Do While iLine < UBound(aLines)
Debug.Print aLines(iLine)
iLine = iLine + 1
Loop