作者laechan (小太保)
看板mud_sanc
标题[分享] ASP 与 XML--part6
时间Thu Jun 7 11:28:40 2012
最近在公司要写的程式,刚刚写完了,这次有玩到几个有趣的部份。
首先,设备有设定一年里面特定的几天,要套用别的参数,如下..
2012-03-03#
2012-04-04#
2012-05-05#
2012-06-06#
以 asp 语法来说,假设 str 等於上面,那今天假设要做一个日期的
新增,该日期并且要能自己判断是要塞在上面那个东西的中间、还是
前面、或是後面,该日期假设叫 new_date,它的写法如下..
new_str = ""
already_ins = 0
' 以 #\n 为分隔符号,对 str 做 explode
for each tmp in split(str,"#" & vbcrlf)
' 进行 new_date 与每个日期的比较, 若小於就加进去
if StrComp(new_date,tmp) < 0 and already_ins = 0 then
new_str = new_str & new_date & "#" & vbcrlf
already_ins = 1
end if
' 然後再累加原先的 tmp
new_str = new_str & tmp & "#" & vbcrlf
next
' 都跑完後若 already_ins 还是 0,就把 new_str 加在最後
if already_ins = 0 then
new_str = new_str & new_date & "#" & vbcrlf
end if
这样假设输入的是 2012-05-01,因该日期 > 2012-04-04 以
前,因此在最初跑回圈时,new_str 都是累加原先的的 tmp.
然後判断到 05-01 < 05-05 时,new_str 就先加上 05-01,
然後再加上 05-05,这样就完成了这笔日期的插入动作。
实际的判断比上面更复杂一点。
======================================================
第二个是,以上面的日期来说,比方有 2011 年、2012 年的
,那我希望它能像底下的呈现方式..
┌─────┬─────┐
│2011-05-05│2012-01-01│
│2011-06-06│2012-02-02│
│ │2012-03-03│
│ │2012-04-04│
│ │2012-05-05│
│ │2012-06-06│
└─────┴─────┘
它的写法如下..
print_str = "<table><tr><th>"
' 先读取最开始的 str 的前四个字串, 就是最初年份 2011
years = left(str,4)
for each tmp in split(str,"#" & vbcrlf)
' 当发现有年份跟最初读到的年份不同时
if years <> left(tmp,4) then
' 马上更新年份
years = left(tmp,4)
print_str = print_str & tmp & "</th><th>"
else
print_str = print_str & tmp & "<BR>"
end if
next
' 最後再加上结尾
print_str = print_str & "</th></tr></table>"
实际上的程式也比上面复杂,因为该 table 是包在另一
个 table 里头,如下..
─┼─────────────┼─
│┌─────┬─────┐│
││2011-05-05│2012-01-01││
││2011-06-06│2012-02-02││
││ │2012-03-03││
││ │2012-04-04││
││ │2012-05-05││
││ │2012-06-06││
│└─────┴─────┘│
─┼─────────────┼─
不过判断的原则不变,html 标签的设计其实跟字串解析
是相同的概念,玩过复杂的字串解析的话,html 标签的
解析就能驾轻就熟。
比较特别的是因为要让日期靠左靠上对齐,标签如下..
<th align=
left valign=
top>
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.106.224
1F:→ laechan :理论上因为程式於昨天写完,今天应该有空coding圣殿. 06/08 07:07