0

我正在做一些相对简单的事情(或者我认为),需要一些帮助。

我正在尝试创建动态数量的逗号分隔字符串。

我有一个变量(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

希望这可以解决这个问题。

4

2 回答 2

2

你可以使用LINQ,虽然我讨厌 VB.NET 方法语法

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"
于 2012-04-17T20:00:52.790 回答
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
于 2012-04-17T18:42:21.103 回答