2012-04-17 55 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