2014-04-12 37 views

回答

2

你要算非空元素:

Option Explicit 

Function UsedElms(a) 
    UsedElms = 0 
    Dim i 
    For i = 0 To UBound(a) 
     If Not IsEmpty(a(i)) Then UsedElms = UsedElms + 1 
    Next 
End Function 

Dim a(5) 
a(2) = 2 
a(4) = 4 
WScript.Echo "ub:", UBound(a), "sz:", UBound(a) + 1, "us:", UsedElms(a) 

輸出:

cscript 23027576.vbs 
ub: 5 sz: 6 us: 2 
0

這裏的我只是想到了一個簡單的單線程,它主要通過將空元素轉換爲空格然後將其修剪掉來計算空元素的數量

intLastIndex = UBound(a) - Len(Join(a, " ")) + Len(Trim(Join(a, " "))) 

只是爲了好玩!不要把它放到生產代碼中。它肯定會更有效地作爲一個雙線:

s = Join(a, " ") 
intLastIndex = UBound(a) - Len(s) + Len(Trim(s)) 

Ekkehard在這裏有正確的答案,但。如果你的數組是連續填充的,這種破解纔有效。

相關問題