|
本帖最后由 lee1892 于 2013-9-3 12:36 编辑
ReDim 会是一个非常让人头痛的问题,其申明新的数组变量时,不受Option Explicit限制
1、ReDim语句可能出像()的嵌套,而VBS的RegExp对象不支持嵌套查找
2、ReDim语句可以重复申明,提取其申明的变量时需要同时记录顺序位置
3、变量可能出现在ReDim语句中,用来计算数组上下限,所以该句需要作为普通语句检查
4、ReDim申明的新变量,可能出现在后续的ReDim语句中用来计算上下限
...
总之,题目不限制的话,ReDim部分是非常消耗耐心的事!我严重怀疑楼主没有考虑这个问题~~
下面的代码取代我之前的附件中的RemoveBracketContent函数,可以提取含有()嵌套的ReDim语句申明的变量名,保留了oExp参数是避免更改原代码中引用该函数的部分。
[code=vb]
Function RemoveBracketContent$(ByVal sStr$, ByRef oExp As Object)
'// REMOVED of REV 3
'Dim bFlag As Boolean, sPattern$
'With oExp
' bFlag = .Global: sPattern = .Pattern
' .Global = True
' .Pattern = "\(.*?\)"
' RemoveBracketContent = .Replace(sStr, "")
' .Global = bFlag: .Pattern = sPattern
'End With
'// NEW of REV 3
Dim i&, nBrks&, sLet$, sRes$
sRes = "": nBrks = 0
For i = 1 To Len(sStr)
sLet = Mid(sStr, i, 1)
If sLet = "(" Then
nBrks = nBrks + 1
ElseIf sLet = ")" Then
nBrks = nBrks - 1
ElseIf nBrks = 0 Then
sRes = sRes & sLet
End If
Next
RemoveBracketContent = sRes
End Function
[/code]
|
|