我对 vb 处理数组的方式不是很熟悉。但我有一个字符串进来,看起来像:
Foo,4,7,12,,6|Bar,4,2,87,5,7|Fly,4,,87,5,7
我需要得到一个二维数组,其中第一维在管道上,第二维在逗号上。
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
,在这种情况下,我们将获取该元素并将 via.Split()
转换为一个字符串数组,该数组将成为结果中的新元素 (即我们从那个 lambda/函数返回的任何东西都成为新元素)。默认情况下它返回一个IEnumerable
所以我叫它ToArray()
使它成为一个二维数组。
PS我的解释可能并不完全准确,但应该足够接近以进行基本理解......
您将需要使用锯齿状数组:检查该链接:
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]);
}
}