台灣最大程式設計社群網站
線上人數
626
 
會員總數:245113
討論主題:189027
歡迎您免費加入會員
討論區列表 >> ASP >> 陣列內容的比對與計算
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
陣列內容的比對與計算
價值 : 100 QP  點閱數:108 回應數:9

樓主

Kevin
初學者
2 5
171 5
發送站內信

有一問題想請教線上高手
有一長字串想要分段數個字串再將各分段的字串做比對計算
EX:
長字串:A01#3/A02#2/A03#3/A01#2/A02#1/A03#4
分段成:
A01#3
A02#2
A03#3
A01#2
A02#1
A03#4

然後將 A01 A02 A03 的值 相加計算
A01 = 5 (3+2)
A02 = 3 (2+1)
A03 = 7 (3+4)

搜尋相關Tags的文章: [ 陣列 ] ,
本篇文章發表於2019-11-05 20:21
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應

1.將字串分開 用split 指令
2.array 排序
3.相加

請將您的程式PO上來,我們好協助您
本篇文章回覆於2019-11-05 22:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Ader Chen
檢舉此回應

手邊沒 ASP 開發環境, 用同年代的 VB6 寫個簡單的 demo, 供參考:
(若要放進 ASP, 可能需視需要修改)


本篇文章回覆於2019-11-07 00:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Kevin
檢舉此回應
Ader Chen 大大
我的想法跟您的一樣 用第一組的陣列去比較 第二組的陣列
只是不知如何用 ASP 的方式寫出細節

字串的長度會有不同 且 A01 A02 ~~ K01 K02 ~~ 這些的排序不同且每一個代號(A01 A02) 會出現的次數也不一定
在第二組的陣列 就是我頭疼的地方
遇到同代號 數值相加 不同代號 寫入新的陣列
本篇文章回覆於2019-11-11 00:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

老頑童
捐贈 VP 給 老頑童 檢舉此回應
依此需求,我會考慮使用dictionary物件
先用Exists方法判斷key存不存在
存在就把Item值相加, 不存在就用Add方法新增
比較不用自己處理陣列
本篇文章回覆於2019-11-11 09:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Ader Chen
檢舉此回應

「字串的長度會有不同 且 A01 A02 ~~ K01 K02 ~~ 這些的排序不同且每一個代號(A01 A02) 會出現的次數也不一定」
只要分隔字元(您的例子是 "/" 和 "#")固定不變, 且 Key 和 Value 無包含分隔字元(造成錯誤分隔), 則上行的狀況不會有問題, 都可用 2樓程式處理.
您應該是使用 VB6 寫 ASP 吧? 若是的話, 應該可測試將 2樓程式 OrgStr 改為各種可能的字串, 以確認結果有沒有問題 (我試過數種組合沒問題才 po 上來的, 不過或許您有更多種我沒想過的組合請況?).
或者您願意 po 出您的 ASP 程式供大家提供建議?
我手邊沒有 ASP 開發環境可測試...

---
'如果是 .NET Framework 有一些方便的集合物件可用, 例如 dictionary...
'但十幾年前的 ASP, VB6 還沒有這些類別, 只能一步一步自己做...

本篇文章回覆於2019-11-11 10:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

Ader Chen
檢舉此回應

經 4樓 老頑童前輩的指點,
原來 ASP 可以使用 CreateObject 方式拿 "Scripting.Dictionary" 來用,
長知識了, 謝謝!
本篇文章回覆於2019-11-11 10:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Kevin
檢舉此回應
老頑童 大大
不好意思 我是新手 搜尋 dictionary物件 看不是很懂 他的用法
我是需要在純 ASP 環境中執行的
本篇文章回覆於2019-11-12 18:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Kevin
檢舉此回應
Ader Chen 大大
目前我還沒寫出程式碼
因為 我還在想該如何寫
我不是 用VB6 寫 ASP ,我是用微軟免費的網頁開發程式 Expression Web4
本篇文章回覆於2019-11-12 18:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

P陳
檢舉此回應
應該不用那麼複雜 程式大概如下即可

切到Arr1
A01#3
A02#2
A03#3
A01#2
A02#1
A03#4
Arr1 經排序後
A01#2
A01#3
A02#1
A02#2
A03#3
A03#4

arr2=split(arr1(ii),"#")
saname=arr2(0)
sumvalue=arr2(1)
for ii=1 to arr1.length-1
arr2=split(arr1(ii),"#")
if arr2(0)<>saname then
debug.print (saname & "=" & sumvalue )
saname=arr2(0)
sumvalue=arr2(1)
else
sumvalue=sumvalue + arr2(1)
end if
next
debug.print (saname & "=" & sumvalue )
本篇文章回覆於2019-11-12 21:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.