使用C#和LINQ分割分隔字符串转换成层次结构 [英] Split a separated string into hierachy using c# and linq
本文介绍了使用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屋!
查看全文