使用c#和linq将分离的字符串拆分为层次结构

前端之家收集整理的这篇文章主要介绍了使用c#和linq将分离的字符串拆分为层次结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用点(‘.’)分隔的字符串代表层次结构的字符:
string source = "Class1.StructA.StructB.StructC.FieldA";

如何使用C#和linq将字符串分割成单独的字符串来显示它们的层次结构?如:

string[] result = new string[]
{
    "Class1","Class1.StructA","Class1.StructA.StructB","Class1.StructA.StructB.FieldA"
};

解决方法

将分隔符分割为不同级别的1 … N并重新加入字符串.
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();

没有LINQ,这是一个更有效的方法

const char DELIMITER = '.';
var source = "Class1.StructA.StructB.StructC.FieldA";
var result = new List<string>();
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

猜你在找的C#相关文章