奇怪了,数组为什么不能动态?

jnyezhi 2006-09-06 01:55:10
我想把一行字符串转成数组,每字母占一个

如果用这个方法
str1 = "1234567890"
arr1 = split(str1,"")

response.write UBound(arr1)
结果为0

我只好自己写过程
str1 = "1234567890"
Dim arr1()
For i = 1 to len(str1)
arr1(i-1) = Mid(str1,i,1)
Next
结果提示我第4行下标越界

加一行,把程序改为
str1 = "1234567890"
arrub = 100
Dim arr1(arrub)
For i = 1 to len(str1)
arr1(i-1) = Mid(str1,i,1)
Next
还是不行,提示如下
缺少整型常数
/test.asp, line 3, column 9
Dim arr1(arrub)
--------^

再改
str1 = "1234567890"
Dim arr1(100)
For i = 1 to len(str1)
arr1(i-1) = Mid(str1,i,1)
Next
这回行了,用下面代码显示一下
For i = 0 To Len(str1)-1
response.write "arr1("&i&")="&arr1(i)&"<br>"
Next
response.write "UBound(arr1)="&UBound(arr1)
得到
arr1(0)=1
arr1(1)=2
arr1(2)=3
arr1(3)=4
arr1(4)=5
arr1(5)=6
arr1(6)=7
arr1(7)=8
arr1(8)=9
arr1(9)=0
UBound(arr1)=100

问题貌似解决了,可数组不能动态显然不行。字符串是随机的,短的只有十几个字符,长的则可能有几百个,为了兼容,我必须把上限定得很高,但这样服务器内存很快就耗尽了。如何解决呢?
...全文
250 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jnyezhi 2006-09-06
  • 打赏
  • 举报
回复
呵呵,谢谢大家。
很久没写ASP了,快忘干净了。其他语言的数组都没有这么麻烦的……
结帖
btbtd 2006-09-06
  • 打赏
  • 举报
回复
这几个用全了估计摆平: dim redim ubound preserve
btbtd 2006-09-06
  • 打赏
  • 举报
回复
接分, 这种问题难得了星星? 那可值得思考.
chenyu112 2006-09-06
  • 打赏
  • 举报
回复
支持eglic(圪圪)
cjl8882000 2006-09-06
  • 打赏
  • 举报
回复
还有 之前你那些错误 如果从1开始循环的话 那后面的LEN(STR)当然要+1才行啊 寒!~
逻辑有点问题
cjl8882000 2006-09-06
  • 打赏
  • 举报
回复
唉 上面的这么快就写出答案了啊…………
REDIM()才是动态数组王道
icefire988 2006-09-06
  • 打赏
  • 举报
回复
就用redim了
http://community.csdn.net/Expert/topic/4996/4996569.xml?temp=.2589533
是是非非 2006-09-06
  • 打赏
  • 举报
回复
动态数组就是 Dim ~ ReDim
是是非非 2006-09-06
  • 打赏
  • 举报
回复
str1 = "1234567890"
Dim arr1()
ReDim arr1(Len(str1)) '这里~~
For i = 1 to len(str1)
arr1(i-1) = Mid(str1,i,1)
Next
idealabc 2006-09-06
  • 打赏
  • 举报
回复
<script language="vbscript">
str="ewrwqerwqrqwerqwer"
dim arr()
redim arr(len(str)) '重新定义数组长度是字符长度
for i=0 to ubound(arr)
msgbox("aa")
next

</script>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧