split与 UBound() 用法疑惑 请高手指点

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:31:15
Dim S As String,A
S="jdifeuA34dke334"
A=Split(S,"A") '区分大小写的时候
'A=Split(Ubound(S),"A") '不区分大小写的时候
For i=1 to ubound(A)
If Len(A(i))>0 Then
Print Val(A(i))
End If
Next

Private Sub Command1_Click()
Dim S As String, S2 As String, A
S = "jdifeuA34dke334"
A = Split(S, "A") '区分大小写的时候
'A=Split(Ubound(S),"A") '不区分大小写的时候
For i = 0 To UBound(A)
If Len(A(i)) > 0 Then
For j = 1 To Len(A(i))
If Mid(A(i), j, 1) >= "0" And Mid(A(i), j, 1) <= "9" Then
S2 = S2 & Mid(A(i), j, 1)
Else
Exit For
End If
Next
If S2 <> "" Then Print Val(S2)
S2 = ""
End If
Next
End Sub

两段代码调试时,
第一个的for 循环是1->2 而A的下标刚好是1->2
第二个的for 循环是0->1 而A的下标刚好是0->1

A的下标为什么自动实应了循环的需求,要1-2时就是

不明白你说的什么。
A(0)=jdifeu
A(1)=34dke334
都一样。
第一个判断的是A(1),
第二个判断的是A(0)和A(1),但A(0)不含数字,就没打印。
另外,第2段代码Mid(A(i), j, 1) >= "0" And Mid(A(i), j, 1) <= "9" 改为IsNumeric(Mid(A(i), j, 1))更好。第1段没判断数据,就直接转换了,可能不太好,最起码要判断A后面的是不是数字。

你看看你打出来的东西一不一样,循环的次数一不一样你就明白了!~