使用C#和LINQ分割分隔字符串转换成层次结构 [英] Split a separated string into hierachy using c# and linq

查看:434
本文介绍了使用C#和LINQ分割分隔字符串转换成层次结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用点分隔(。)字符的字符串,代表一个层次结构:

 字符串源=1级。 StructA.StructB.StructC.FieldA; 



我如何使用C#和LINQ分裂串入单独字符串,以显示自己的层次?如:

 的String []的结果=新的String [] 
{
1级,
Class1.StructA,
Class1.StructA.StructB,
Class1.StructA.StructB.FieldA
};


解决方案

抽出1分隔符分割字符串... 。不同级别的N和归队字符串

 为const char DELIMITER =''; 
无功源=Class1.StructA.StructB.StructC.FieldA;
变种等级= source.Split(分隔符);
变种结果= Enumerable.Range(1,hierarchy.Length)
。选择(ⅰ=>中。的string.join(,hierarchy.Take(ⅰ)))
.ToArray ();

下面是这样做没有LINQ更有效的方式:

 为const char DELIMITER =''; 
无功源=Class1.StructA.StructB.StructC.FieldA;
VAR的结果=新的List<串GT;();
的for(int i = 0; I< source.Length;我++)
{
如果(来源[I] ==分隔符)
{
的结果。添加(source.Substring(0,I));
}
}
result.Add(源); //假设有没有尾随分隔符


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

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

How can I use C# and linq to split the string into separate strings to show their hierarchy? Such as:

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

解决方案

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<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#和LINQ分割分隔字符串转换成层次结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆