◆字符串输出为数组问题

huaerinfo 2006-01-08 04:38:35
假如有一字符串:a;001;002;003;004;b;001;002
我想实现如下输出功能:
a
001 002 003
004
b
007 008

在HMTL即是:
<table>
<tr><td colspan=3>a</td></tr>
<tr><td>001</td><td>002</td><td>003</td></tr>
<tr><td>004</td></tr>
<tr><td colspan=3>b</td></tr>
<tr><td>007</td><td>008</td></tr>

以下是我写的函数,但变成了如下显示:
a
b
a 001 002
003 004
b 007 008

我不知道错在那了,请帮我分析修改下,谢谢..
...全文
200 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxcooi 2006-01-09
  • 打赏
  • 举报
回复
行用div列用span多好。
不用关心跨列的问题,
xxuu503 2006-01-09
  • 打赏
  • 举报
回复
if j - 1 = 0 then
htmlcode=htmlcode&"<tr height=40><td colspan=3>"&ArrayStr2(j-1)&"</td></tr>"
end if

你说结果是:
a
002 003
004
b
008

是不是你把j-1按成j计算了?
xxuu503 2006-01-09
  • 打赏
  • 举报
回复
OK,一寸木的代码,我这样子测试的!
出来的结果是正确的

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
</HEAD>
<BODY>
<div id='test'></div>
<SCRIPT LANGUAGE="VBScript">
<!--
outdate = "a;001;002;003;004;#b;007;008;#"
tablea="<table width=100% align=center bgcolor=ff9900>"
tableb="</table>"
ArrayStr1=split(outdate,"#")
for i=0 to ubound(ArrayStr1)
ArrayStr2=split(ArrayStr1(i),";")
'****************************
for j = 1 to ubound(ArrayStr2)
if j - 1 = 0 then
htmlcode=htmlcode&"<tr height=40><td colspan=3>"&ArrayStr2(j-1)&"</td></tr>"
end if

if j mod 3 = 1 then
htmlcode=htmlcode&"<tr height=40>"
end if

if j <> 0 then
htmlcode=htmlcode&"<td width='33%'>" & ArrayStr2(j) & "</td>"
end if

if j mod 3=0 then
htmlcode=htmlcode&"</tr>"
end if
next
'****************************
next
outtable=tablea&htmlcode&tableb
test.innerHTML=outtable
//-->
</SCRIPT>
</BODY>
</HTML>
KimSoft 2006-01-09
  • 打赏
  • 举报
回复
我写的已经测试过了,是可以的啊。
opolmzy 2006-01-09
  • 打赏
  • 举报
回复
才来上班,下班后帮你做。

qq:544707557
huaerinfo 2006-01-09
  • 打赏
  • 举报
回复
那位高手来顶顶啊。。。
  • 打赏
  • 举报
回复
至少a,b这些字母中间该有不同的分隔符吧
huaerinfo 2006-01-09
  • 打赏
  • 举报
回复
xxuu503,谢谢你,按照你那样就可以实现了,YEAR。
一寸木、革命的小酒天天醉,真的很谢谢你们一直不烦的给予帮助。
huaerinfo 2006-01-08
  • 打赏
  • 举报
回复
soft_2008
你的方法,不是很懂.

xxuu503,如果按照一寸木改的代码,就变成这样了,全乱了:
a
002 003
004
b
008
xxuu503 2006-01-08
  • 打赏
  • 举报
回复
一寸木的代码对


KimSoft

htmlcode=htmlcode&"<td width='33%'>" & ArrayStr2(j-1) & "</td>"

应该是j而不是j-1

否则第一项会被处理两次
soft_2008 2006-01-08
  • 打赏
  • 举报
回复
主要是碰到固定数据就换行吧?

建议以行为单位,即:
-------------------------
a
---
001 002 003
-------------------------

-------------------------
b
---
001 002 003
-------------------------
也就是每次循环都输出两行,第一行放项元(a\b\c\d),第二行放子元。要用两个数组,一个存项元,一个存子元个数(用以决定格数,也是循环次数)
first [a,b,c,d]
second[2,3,2,3] //对应关系,子元个数
huaerinfo 2006-01-08
  • 打赏
  • 举报
回复
对的.
a与b都是只是固定的数据,但还有求知的c,d...
我现在是要求不管多少a,b,c,d,都要读成如下的格式:
a
001 002 003
b
001 002 003
c
001 002 003
..........
huaerinfo 2006-01-08
  • 打赏
  • 举报
回复
opolmzy(ASP)( 一寸木)
如果按照你改的,还是读不出来,变成以下这样了:
a
002 003
004
b
008
opolmzy 2006-01-08
  • 打赏
  • 举报
回复
a与b都是固定的?
huaerinfo 2006-01-08
  • 打赏
  • 举报
回复
opolmzy(ASP)( 一寸木)
如果是固定的数据(“a;001;002;003;004;#b;007;008;#"”),
肯定有更优的方式实现你的要求
如果你来处理,有何妙计?
是的,我只要区分开a与b并读出它们各自相关的数据,按一定的格式输出就行了.
opolmzy 2006-01-08
  • 打赏
  • 举报
回复
kimsoft的

htmlcode=htmlcode&"<td width='33%'>" & ArrayStr2(j) & "</td>"

改为

if j <> 0 then
htmlcode=htmlcode&"<td width='33%'>" & ArrayStr2(j) & "</td>"
end if

opolmzy 2006-01-08
  • 打赏
  • 举报
回复
如果是固定的数据(“a;001;002;003;004;#b;007;008;#"”),肯定有更优的方式实现你的要求
huaerinfo 2006-01-08
  • 打赏
  • 举报
回复
这是从数据库提出来的字符串.
呵呵,我想了很久了,只有这样来处理才是最好的.
但是就是不能实现我的要求.
huaerinfo 2006-01-08
  • 打赏
  • 举报
回复
奇怪,上面的代码本来就是不行的啊..
opolmzy 2006-01-08
  • 打赏
  • 举报
回复
这样的函数几乎没有任何意义

数据来源很重要,“a;001;002;003;004;#b;007;008;#"”这是固定的?还是?

个人感觉这样的函数写出来重用性太差了
加载更多回复(6)

28,391

社区成员

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

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