7,763
社区成员
发帖
与我相关
我的任务
分享
Function XTrim(s As String) As String
...
Wend
if lLevel <> 0 then msgbox "括号不成对!"
XTrim = sReturn
End Function
Function XTrim(s As String) As String
...
Wend
if lLevel = 0 then msgbox "括号不成对!"
XTrim = sReturn
End Function
Option Explicit
Sub main()
Debug.Print XTrim("一切正常 开始 (发言人 小李)")
Debug.Print XTrim("一切正常 (一切正常 开始 (发言人 小李)) 开始")
Debug.Print XTrim("一切正常 ((发言人 小李) 开始 (发言人 小李) ) 开始")
End Sub
Function XTrim(s As String) As String
Dim sReturn As String, lLen As Long, i1 As Long, i2 As Long
Dim lLevel As Long, iLeft As Long, iRight As Long
lLen = Len(s)
i1 = 1
While i1 <= lLen
iLeft = InStr(i1, s, "(")
If iLeft = 0 Then iLeft = lLen + 1
iRight = InStr(i1, s, ")")
If iRight = 0 Then iRight = lLen + 1
i2 = IIf(iLeft < iRight, iLeft, iRight) '=Min(iLeft,iRight)
If lLevel > 0 Then '括号内
sReturn = sReturn & Mid$(s, i1, i2 - i1)
Else '括号外
sReturn = sReturn & Replace(Mid$(s, i1, i2 - i1), " ", "")
End If
If i2 <= lLen Then
If i2 = iLeft Then
sReturn = sReturn & "("
lLevel = lLevel + 1
Else
sReturn = sReturn & ")"
lLevel = lLevel - 1
End If
End If
i1 = i2 + 1
Wend
XTrim = sReturn
End Function
Private Sub Command1_Click()
Dim s As String, t As String
Dim i As Long
Dim x() As String
s = "(内部 空格)一切正常 开始 (发言人 小李) (发言人 小李)"
s = Replace(s, "(", "#") '如果原始字符串包含#就不好用了,可以考虑用别的特殊字符
s = Replace(s, ")", "#")
x = Split(s, "#")
For i = 0 To UBound(x) - 1 Step 2
t = t & Replace(x(i), " ", "") & "(" & x(i + 1) & ")"
Next
Debug.Print t
End Sub