在 VBScript 中确定数组中元素数量的“最佳”方法是什么?
UBound() 会告诉您已为数组分配了多少个槽位,但不会告诉您填充了多少个槽位——取决于具体情况,这些数字可能相同也可能不同。
最佳答案
首先,没有预定义的标识符称为 vbUndefined
,正如当前接受的答案似乎暗示的那样。该代码仅在脚本顶部没有 Option Explicit
时才有效。如果您还没有使用 Option Explicit
,那么就开始使用吧,它会让您省去所有的麻烦。
您可以用来代替 vbUndefined
的值是 Empty
,例如:-
If arr(x) = Empty Then ...
Empty
是预定义的标识,是尚未分配值的变量或数组元素的默认值。
但是有一些问题需要注意。以下语句均显示为真:-
MsgBox 0 = Empty
MsgBox "" = Empty
MsgBox CDate("30 Dec 1899") = True
因此,如果您希望这些值中的任何一个是数组元素的有效定义值,那么与 Empty 进行比较不会削减它。
如果您真的想确定该元素是真正“未定义”的“空”元素,请使用 IsEmpty
函数:-
If IsEmpty(arr(x)) Then
IsEmpty
仅当参数实际上正确地为 Empty
时才返回 true。
还有一个问题,Null
是一个可能的值,可以保存在数组或变量中。然而:-
MsgBox Null = Empty
是一个运行时错误,“null 的无效使用”和:-
MsgBox IsEmpty(Null)
是错误的。因此,您需要确定 Null
是表示未定义还是有效值。如果 Null
也意味着未定义,你需要你的 If
语句看起来像:-
If IsEmpty(arr(x)) Or IsNull(arr(x)) Then ....
如果您知道永远不会将 Null
分配到数组中,您可以放弃此操作。
关于VBScript:查找数组中非空元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1138842/