以下内容是关于split与UBound()的用法疑惑,请高手指点!

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时就是1-2,要0-1时是0->1
UBound(a) 同一个东西,为什么一会是1,而一会又是2 ??????????????????
请,分别调试一下两段程序for循环中的i值,以及对应的A(i)的值.
就知道了.

打出来的东西一样,循环的次数一样.
不一样的是:
第一个A(1)=jdifeu A(2)=34dke334
第二个A(0)=jdifeu A(1)=34dke334
而A是完全相同的A!

天涯尽头无女友
浏览 168回答 2
2回答

慕虎7371278

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

湖上湖

你看看你打出来的东西一不一样,循环的次数一不一样你就明白了!~
打开App,查看更多内容
随时随地看视频慕课网APP