我被困在这里。花了几个小时尝试了许多不同的方法,但没有任何工作
我有一个包含看起来像这样的文本的数组
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)
答案 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)))
以下是输出的屏幕截图...