2012-04-17 59 views
0

我正在做一些相對簡單的事情(或者我想),需要一些幫助。asp.net array/arraylist錯誤

我想創建一個逗號分隔字符串的動態數量。

我有一個變量(numberOfStrings),這是我需要的不同字符串的數量。 我只想通過aryDrivers循環,然後分配給不同的字符串。

Dim aryHeats(numberOfStrings - 1) As ArrayList 

Dim aryDrivers() As String 
aryDrivers = txtBatch.Text.Split(",") 

For i As Integer = 0 To aryDrivers.Length - 1 
    For j As Integer = 0 To aryHeats.Length - 1 
     aryHeats(j).Add(aryDrivers(i) & ",") 
    Next 
Next 

由於某種原因,我在嘗試「添加」字符串時出現了循環錯誤。

想法?

謝謝!

* *更新**

也許這將有助於解釋更多的什麼,我試圖做的。我有一個字符串:

s = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S, T,U,V,W,X,Y,Z

即時傳遞變量(numberOfHeats)允許使用4.

我想然後有4個串(所以我想用陣列)

ary(0) = A,E,I,M,Q,U,Y 
ary(1) = B,F,J,N,R,V,Z 
ary(2) = C,G,K,O,S,W 
ary(3) = D,H,L,P,T,X 

希望能夠解決這個問題。

+0

你想添加anyDrivers字符串數組項目anyHeats數組列表? – hkutluay 2012-04-17 18:35:47

+0

是的。我收到一個錯誤。對象不算什麼。 – kylemac 2012-04-17 18:40:03

+0

我能弄清楚這一點,但它不會讓我發佈和答覆,直到明天。關鍵是我只需要不要將它聲明爲數組或ArrayList,而是將其聲明爲一個字符串。 Dim aryHeats(numberOfHeats - 1)As String – kylemac 2012-04-17 19:24:18

回答

2

你可以使用LINQ,雖然i hate VB.NET method syntax

Dim text = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" 
Dim numberOfHeats = 4 
Dim aryHeats As String()() = s.Split(","c). 
     Select(Function(w, index) New With {.Word = w, .Index = index}). 
     GroupBy(Function(x) x.Index Mod numberOfHeats). 
     Select(Function(grp) grp.Select(Function(x) x.Word).ToArray()). 
     ToArray() 

說明:它需要的初始字符串,並將其在詞拆分(逗號作爲分隔符)。然後它將字符串中的單詞和相應索引轉換爲匿名類型,其中WordIndex爲屬性。此列表將按照Index Mod numberOfHeats(您想要的陣列數量)進行分組。這隱含地命令你想要的結果。最後一步是將組轉換爲鋸齒狀數組。

結果:

(0) 
    (0) "A" 
    (1) "E" 
    (2) "I" 
    (3) "M" 
    (4) "Q" 
    (5) "U" 
    (6) "Y" 
(1) 
    (0) "B" 
    (1) "F" 
    (2) "J" 
    (3) "N" 
    (4) "R" 
    (5) "V" 
    (6) "Z" 
(2)  
    (0) "C" 
    (1) "G" 
    (2) "K" 
    (3) "O" 
    (4) "S" 
    (5) "W" 
(3) 
    (0) "D" 
    (1) "H" 
    (2) "L" 
    (3) "P" 
    (4) "T" 
    (5) "X" 
0

試試這個

Dim aryHeats(numberOfStrings - 1) As ArrayList 

Dim aryDrivers() As String 
aryDrivers = txtBatch.Text.Split(",") 

For i As Integer = 0 To aryDrivers.Length - 1 
    aryHeats( i Mod aryHeats.Length ).Add(aryDrivers(i) & ",") 

Next 
+0

我也試過,也沒有去。 – kylemac 2012-04-17 18:50:09

+0

已編輯..立即檢查。 – hkutluay 2012-04-17 18:54:03

+0

好的,我看到你正在嘗試,但不使用我的numberOfHeats變量。我更新了我的帖子,以更好地舉例說明我正在嘗試做什麼。謝謝。 – kylemac 2012-04-17 19:03:54