将单个字符串转换为嵌套列表数组

时间:2017-08-31 07:01:28

标签: c# list split

String value =“ 71.08099899999999,24.10229 // 71.08099899999999,24.102665 /// 71.080874,24.10279 // 71.080749,24.102915 ”;

到嵌套数组列表

List<List<List<decimal>>> Arr = [
    [
        [
            [71.08099899999999][24.10229]
        ][
            [71.08099899999999][24.102665]
        ]
    ][
        [
            [71.080874][24.10279]
        ][
            [71.080749][24.102915]
        ]
    ]
];

我现在尝试过的事情:

List<List<string>> val1 = new List<List<string>>();
List<List<List<string>>> val2 = new List<List<List<string>>>();

string[] val = value .Split(new string[] { " /// " }, StringSplitOptions.None);
for (int i = 0; i < val.Length - 1; i++)
{
    val1.Add(val[i].Split(new string[] { " // " }, StringSplitOptions.None).ToList());
}

for (int i = 0; i < val1.Count; i++)
{
    for (int j = 0; j < val1[i].Count-1; i++) { }
}

1 个答案:

答案 0 :(得分:2)

使用.Split和linq .Select

var result = value.Split(new[] { "///" }, StringSplitOptions.None).Select(lvl1 =>
                lvl1.Split(new[] { "//" }, StringSplitOptions.None).Select(lvl2 =>
                    lvl2.Split(',').Select(val => 
                        decimal.Parse(val.Trim())).ToList()).ToList()).ToList();

请注意,如果其中一个值不是有效小数,则会失败。确保您可以预测decimal?并使用decimal.TryParse然后Select仅使用非空商品

作为旁注..拥有如此多的嵌套集合似乎是一种设计气味。考虑考虑不同的设计