为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

天涯尽头无女友 2022-04-04 13:09:18
Dim S As String,AS="jdifeuA34dke334"A=Split(S,"A") '区分大小写的时候'A=Split(Ubound(S),"A") '不区分大小写的时候For i=1 to ubound(A)If Len(A(i))>0 ThenPrint Val(A(i))End IfNextPrivate Sub Command1_Click()Dim S As String, S2 As String, AS = "jdifeuA34dke334"A = Split(S, "A") '区分大小写的时候'A=Split(Ubound(S),"A") '不区分大小写的时候For i = 0 To UBound(A)If Len(A(i)) > 0 ThenFor j = 1 To Len(A(i))If Mid(A(i), j, 1) >= "0" And Mid(A(i), j, 1) <= "9" ThenS2 = S2 & Mid(A(i), j, 1)ElseExit ForEnd IfNextIf S2 <> "" Then Print Val(S2)S2 = ""End IfNextEnd Sub两段代码调试时,第一个的for 循环是1->2 而A的下标刚好是1->2第二个的for 循环是0->1 而A的下标刚好是0->1A的下标为什么自动实应了循环的需求,要1-2时就是1-2,要0-1时是0->1UBound(a) 同一个东西,为什么一会是1,而一会又是2 ??????????????????请,分别调试一下两段程序for循环中的i值,以及对应的A(i)的值.就知道了.打出来的东西一样,循环的次数一样.不一样的是:第一个A(1)=jdifeu A(2)=34dke334第二个A(0)=jdifeu A(1)=34dke334而A是完全相同的A!
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

不明白你说的什么。
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后面的是不是数字。



查看完整回答
反对 回复 2022-04-07
?
湖上湖

TA贡献2003条经验 获得超2个赞

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

查看完整回答
反对 回复 2022-04-07
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号