我太菜了,按大侠们思路写了个,还没测试.不对的话大家扔砖别太狠呵 function findserial("|",string as string,n as integer)'找"|"在string中第n次出现的位置序数 string="sd|jf|dsj|fd38|37sj" dim aa() as string dim serial as integer a=split(string,"|") for i = 0 to n serial=serial+len(a(i)) next i findserial("|",string,n)=serial end functionPrivate Sub Command1_Click() text1=findserial("|",string,2)'应该等于6 End Sub
function findserial("|",string,n)'找"|"在string中第n次出现的位置序数 string="sd|jf|dsj|fd38|37sj" '...? end function 没见过这么定义函数的:==> Function FindSerial(sMark As String, s As String, ByVal n As Long) As Long '找"|"在string中第n次出现的位置序数 '...? Dim i As Long Dim a As Long
For i = 1 To Len(s) If Mid(s, i, 1) = sMark Then n = n - 1 If n = 0 Then FindSerial = i Exit Function End If End If Next End Function
不建议用 Split,因为那样需要累加数组中的串长。 Private Sub Command1_Click() Dim strSource As StringstrSource = "sd|jf|dsj|fd38|37sj"MsgBox findserial("|", strSource, 2) End SubPublic Function findserial(strPattern As String, strSource As String, n As Integer) As Integer Dim i As Integer, p As IntegerDo Until i = n p = p + 1 p = InStr(p, strSource, strPattern) If p > 0 Then i = i + 1 Else Exit Do End If Loopfindserial = p End Function
1,用字符串函数。split 然后数数⋯⋯
2,直接自己用循环加计数器判断。
用“|”分割成数组A()
第五次就是A(0)到A(4)的总长度
function findserial("|",string as string,n as integer)'找"|"在string中第n次出现的位置序数
string="sd|jf|dsj|fd38|37sj"
dim aa() as string
dim serial as integer
a=split(string,"|")
for i = 0 to n
serial=serial+len(a(i))
next i
findserial("|",string,n)=serial
end functionPrivate Sub Command1_Click()
text1=findserial("|",string,2)'应该等于6
End Sub
string="sd|jf|dsj|fd38|37sj"
'...?
end function
没见过这么定义函数的:==>
Function FindSerial(sMark As String, s As String, ByVal n As Long) As Long '找"|"在string中第n次出现的位置序数
'...?
Dim i As Long
Dim a As Long
For i = 1 To Len(s)
If Mid(s, i, 1) = sMark Then
n = n - 1
If n = 0 Then
FindSerial = i
Exit Function
End If
End If
Next
End Function
Private Sub Command1_Click()
Dim strSource As StringstrSource = "sd|jf|dsj|fd38|37sj"MsgBox findserial("|", strSource, 2)
End SubPublic Function findserial(strPattern As String, strSource As String, n As Integer) As Integer
Dim i As Integer, p As IntegerDo Until i = n
p = p + 1
p = InStr(p, strSource, strPattern)
If p > 0 Then
i = i + 1
Else
Exit Do
End If
Loopfindserial = p
End Function
闭门思过ing