从字符串拆分中制作二维数组

时间:2013-10-25 01:16:54

标签: .net vb.net string

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

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

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

2 个答案:

答案 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]);
    }
}