0

我对 vb 处理数组的方式不是很熟悉。但我有一个字符串进来,看起来像:

Foo,4,7,12,,6|Bar,4,2,87,5,7|Fly,4,,87,5,7

我需要得到一个二维数组,其中第一维在管道上,第二维在逗号上。

4

2 回答 2

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,在这种情况下,我们将获取该元素并将 via.Split()转换为一个字符串数组,该数组将成为结果中的新元素 (即我们从那个 lambda/函数返回的任何东西都成为新元素)。默认情况下它返回一个IEnumerable所以我叫它ToArray()使它成为一个二维数组。

PS我的解释可能并不完全准确,但应该足够接近以进行基本理解......

于 2013-10-25T01:21:53.317 回答
1

您将需要使用锯齿状数组:检查该链接:

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]);
    }
}
于 2013-10-25T01:40:54.533 回答