取中间函数要求:
s="aXbcdXfefgaXf",参数:s1="X",s2="X",结果既可以得到"bcd"也可以得到"fefga"删除中间函数要求:
s="a[bcdfef]g[af]x",参数:s1="[",s2="]",结果是"agx"-------------------------------------------
希望能得到高效算法的函数!
s="aXbcdXfefgaXf",参数:s1="X",s2="X",结果既可以得到"bcd"也可以得到"fefga"删除中间函数要求:
s="a[bcdfef]g[af]x",参数:s1="[",s2="]",结果是"agx"-------------------------------------------
希望能得到高效算法的函数!
dim arr() as string,i as integer
arr=split(s,"X")For i = 1 To UBound(arr) - 1
MsgBox arr(i)
next i按照你的例子,试验通过
Dim uu() As String
uu = Split("", "X")
Msgbox UU(1)
Msgbox UU(2)第二个问题简单
Private Function getStrInfo(jj As String) As String
Dim aa() As String, bb() As String, ReturnStr As String
aa = Split(jj, "[")
ReturnStr = aa(0)
If UBound(aa) >= 1 Then
For X = 1 To UBound(aa)
bb = Split(aa(X), "]")
If UBound(bb) = 1 Then
ReturnStr = ReturnStr & bb(1)
End If
Next X
End If
getStrInfo = ReturnStr
End Function
用split即可,不必那么麻烦
s="a[bcdfef]g[af]x",参数:s1="[",s2="]",结果是"agx"先replace s1为s2
然后split(s2)
索引是偶数的就是删除中间函数
索引奇数就是取中间函数
Dim s As String, s1 As String, s2 As String
s = "a[bcdfef]g[af]x"
s1 = "["
s2 = "]"
MsgBox DeleteString(s, s1, s2)
End Sub
Function DeleteString(sA As String, sA1 As String, sA2 As String) As String
Dim iif1, iif2 As Integer
iif1 = InStr(sA, sA1): iif2 = InStr(sA, sA2)
If iif1 < 1 Or iif2 < 1 Then
'do nothing
Else
sA = Mid(sA, 1, iif1 - 1) + Mid(sA, iif2 + 1)
Call DeleteString(sA, sA1, sA2) '调用
End If DeleteString = sA
End Function
s="a(b[c:dfef]]g[af:]x",
1.取值:参数s1="[",s2=":",要求可以取得前面部分结果是"c",也可以取得后面部分是"af";
2.删除:参数s1="[",s2="]",要求结果"a(b]gx"
注意:s1,s2参数既可以相等也可以不等
SPlit,Instr,Instrrev,Mid,Replace,Left,Right,Space,Trim,join...没人有义务给你娶媳妇,还包你生儿子。
come on!