无条件地将String拆分为锯齿状阵列

时间:2013-02-28 11:53:43

标签: c# .net string linq

我有以下字符串

 String s = "1:2,a;1:3,b;1:4";

我可以按照here中的示例将字符串划分为两个级别的锯齿状数组,但我无法将其扩展到另一个级别,以便根据,再添加一个分割器获取string[][][] f

中的输出
String[][] f = s.Split( ';' ).Select( t => t.Split( ':' ) ).ToArray();

3 个答案:

答案 0 :(得分:3)

Nest,我的美女!

String[][][] fff = 
    s.Split(';').Select(
        t => t.Split(':').Select(
            u => u.Split(',')
        ).ToArray()
    ).ToArray();

String[][][][] ffff =
s.Split(';').Select(
    t => t.Split(':').Select(
        u => u.Split(',').Select(
            v => v.Split('.')
        ).ToArray()
    ).ToArray()
).ToArray();

String[][][][][] fffff =
s.Split(';').Select(
    t => t.Split(':').Select(
        u => u.Split(',').Select(
            v => v.Split('.').Select(
                w => w.Split('/')
            ).ToArray()
        ).ToArray()
    ).ToArray()
).ToArray();

正如你所看到的,你想要拆分的东西越多越坏。没有办法使这个递归并仍然得到强类型数组,但这里有一个函数,它将给你Array - 你只需要递归检查每个元素是string还是另一个{ {1}}:

Array

答案 1 :(得分:1)

怎么样:

s.Split( ';' ).Select(
    t => t.Split( ':' ).Select(
        u => u.Split( ',' )
    ).ToArray()
).ToArray();

答案 2 :(得分:1)

试试这个:

String s = "1:2,a;1:3,b;1:4";

String[][][] f = s.Split(';').Select(t => t.Split(':').Select( e => e.Split(',') ).ToArray()).ToArray();