ASP 数组-一维数组

作者:vkvi 来源:ITPOW(原创) 日期:2009-2-8

阅读本文之前建议先阅读本连载的第一篇:ASP 数组-定义

本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组。

下标

  • ASP 数组的下标也是从 0 开始的。
  • 要获取某个元素的值则在数组变量后面加上括号,括号中标明下标值,比如 arr(0),注意不是中括号,而是小括号。

定义

dim arr() '定义动态数组
dim arr2(2) '定义静态数组

在变量名称后面加上括号,就形成了数组。如果括号中指定了数值,就表示定义一个静态数组,即固定大小的数组。

代码中

  • arr() 定义一个动态数组,需要重定义确定长度后才能使用,关于重定义请参见后面。
  • arr2(2) 定义一个下标上限是 2(长度为 3)的静态数组,这与其他语言(比如 C#、JavaScript)有所不同,其他语言的括号中参数表示长度。

erase

erase 动态数组时释放动态数组的存储空间;erase 静态数组时,只是初始化数组的元素值。

dim arr()
redim arr(2)
erase arr
alert(ubound(arr)) '错误,erase 已经将动态数组的存储空间全部释放。

dim arr(1)
erase arr
alert(ubound(arr)) '显示 1,erase 只是初始化静态数组的元素值,其占用的空间还在。 

重定义 redim

对于动态数组,可以重定义,重定义之后也可以继续重定义;不能对静态数组进行重定义。

dim arr()
dim arr2(2)
dim arr3()
redim arr(0) '将数组 arr 的下标上限设为 0(长度为 1)。
redim arr2(1) '发生错误。
redim arr3(-1) '正确,可以设置为 -1,以表示这个数组长度为 0。

如上重定义数组将导致该数组原有赋值丢失。

重定义 redim preserve

前面讲到重定义数组将导致该数组原有赋值丢失,怎么能保证不丢失呢?用 redim preserve。

dim arr()
 
redim arr(1)
arr(0) = "1"
alert(arr(0)) '显示 1
 
redim preserve arr(2)
alert(arr(0)) '仍然显示 1

UBound

ASP 数组没有获取长度的属性或方法,只有获取下标上限的方法-UBound(数组名称),即数组下标的最大值,比如 UBound(arr)。

dim arr(1)
Response.Write(UBound(arr)) ' 显示上限 1,数组长度为 2

dim arr2()
redim arr2(-1) ' 可以为动态数组 redim 上限为 -1,但不能为其他负数,比如 -2 就会报“内存不够”。
Response.Write(UBound(arr2)) ' 显示上限 -1,数组长度为 0

dim arr3()
'Response.Write(UBound(arr3)) ' 发生错误

Split

Split 将字符串分隔为数组,如下 arr2 是错误的。

dim arr
dim arr2() '错误,这里不能有括号。
arr = Split("1,2,3", ",")
arr2 = Split("1,2,3", ",")
相关文章