解析数组For Next循环Visual Basic

时间:2016-09-03 01:54:43

标签: vb.net

我被困在这里。花了几个小时尝试了许多不同的方法,但没有任何工作

我有一个包含看起来像这样的文本的数组

4456|4450|17
4466|4430|18
4446|4420|19
4436|4410|20

分隔符是异食癖(“|”)。

我要做的是运行数组并在单独的字符串中提取前两列以比较值,查找最大值和最小值。

我想尝试使用像这样的字符串

4456,4466,4446,4436

以下是解决方案:

                Dim source As String = prices
                Dim stringSeparators() As String = {vbCrLf}
                Dim result() As String
                result = source.Split(stringSeparators,
                  StringSplitOptions.RemoveEmptyEntries)

                Dim fString As String = String.Join(Of String)(", ", result.Cast(Of String).Select(Of String)(Function(x) x.Split("|")(0)))

                    MsgBox(fString)

1 个答案:

答案 0 :(得分:2)

我们来看下面的例子......

4456|4450|17
4466|4430|18
4446|4420|19
4436|4410|20

 prices = [the array shown above]
                For Each i As String In prices
                    high = (i.Split("|"))(0)
                    highs = highs & highs1 & ","

                    MsgBox(highs)
                Next

您获得4,4,5,6,,4,4,5,0,,1,7的原因是因为您在|分割的每个字符串然后取第一个字符为其添加逗号。

如果你想要在|之前调用第一列或索引,你需要循环遍历该数组中的每个字符串并选择值......

'this is my test array...
Dim arr As New ArrayList From {"4456|4450|17", "4466|4430|18", "4446|4420|19", "4436|4410|20"}

现在我们可以使用String.Join函数,将每个项目的数组转换为字符串,最后选择拆分中的第一个项目。这将获得|之前的每个项目,并将它们放在用逗号分隔的字符串中。

 Dim fString As String = String.Join(Of String)(", ", arr.Cast(Of String).Select(Of String)(Function(x) x.Split("|")(0)))

如果你想第二部分选择第一个索引,因为数组从0开始......

 Dim sString As String = String.Join(Of String)(", ", arr.Cast(Of String).Select(Of String)(Function(x) x.Split("|")(1)))

以下是输出的屏幕截图...

enter image description here