我不太熟悉vb处理数组的方式。但我有一个字符串,看起来像:
Foo,4,7,12,,6|Bar,4,2,87,5,7|Fly,4,,87,5,7
我需要最终得到一个二维数组,其中第一维在管道上,第二维在逗号上。
答案 0 :(得分:4)
Dim splitThis = "Foo,4,7,12,,6|Bar,4,2,87,5,7|Fly,4,,87,5,7"
Dim splitAtPipe = splitThis.Split("|"c)
Dim result = splitAtPipe.Select(Function(x) x.Split(","c)).ToArray()
最后一行是使用LINQ在splitAtPipe
上进行转换。对于数组中的每个元素,它基于该元素(lambda中的变量x
)选择一个新的 thing ,在这种情况下,我们将通过{{获取元素并进行转换1}}成为一个字符串数组,它成为结果中的新元素(即从lambda /函数返回的任何内容都成为新元素)。默认情况下,它返回.Split()
,因此我调用IEnumerable
使其成为二维数组。
P.S。我的解释可能并不完全准确,但应该足够接近基本的理解......
答案 1 :(得分:0)
您需要使用锯齿状数组: 检查该链接:
http://msdn.microsoft.com/en-us/library/2s05feca.aspx
(VB.NET)中提出的代码:
Imports System.IO
Class Program
Private Shared Sub Main()
Dim line As [String] = "Foo,4,7,12,,6|Bar,4,2,87,5,7|Fly,4,,87,5,7"
Dim rows As [String]() = line.Split("|"C)
Dim matrix As [String]()() = New [String](rows.Length - 1)() {}
For i As Integer = 0 To rows.Length - 1
matrix(i) = rows(i).Split(","C)
Next
Console.WriteLine(matrix(0)(0))
End Sub
End Class
代码应该是这样的(在C#中):
using System.IO;
using System;
class Program
{
static void Main()
{
String line = "Foo,4,7,12,,6|Bar,4,2,87,5,7|Fly,4,,87,5,7";
String[] rows = line.Split('|');
String[][] matrix = new String[rows.Length][];
for(int i =0; i<rows.Length; i++) {
matrix[i] = rows[i].Split(',');
}
Console.WriteLine(matrix[0][0]);
}
}