Split a separated string into hierarchy using c# and linq

后端 未结 3 1200
独厮守ぢ
独厮守ぢ 2021-02-14 23:02

I have string separated by dot (\'.\') characters that represents a hierarchy:

string source = \"Class1.StructA.StructB.StructC.FieldA\";

How c

3条回答
  •  無奈伤痛
    2021-02-14 23:43

    Split the string by the delimiters taking 1...N of the different levels and rejoin the string.

    const char DELIMITER = '.';
    var source = "Class1.StructA.StructB.StructC.FieldA";
    var hierarchy = source.Split(DELIMITER);
    var result = Enumerable.Range(1, hierarchy.Length)
        .Select(i => String.Join(".", hierarchy.Take(i)))
        .ToArray();
    

    Here's a more efficient way to do this without LINQ:

    const char DELIMITER = '.';
    var source = "Class1.StructA.StructB.StructC.FieldA";
    var result = new List();
    for (int i = 0; i < source.Length; i++)
    {
        if (source[i] == DELIMITER)
        {
            result.Add(source.Substring(0, i));
        }
    }
    result.Add(source); // assuming there is no trailing delimiter
    

提交回复
热议问题