我有字符串用点('.')字符分隔,表示层次结构:
string source = "Class1.StructA.StructB.StructC.FieldA";
Run Code Online (Sandbox Code Playgroud)
如何使用C#和linq将字符串拆分为单独的字符串以显示其层次结构?如:
string[] result = new string[]
{
"Class1",
"Class1.StructA",
"Class1.StructA.StructB",
"Class1.StructA.StructB.FieldA"
};
Run Code Online (Sandbox Code Playgroud)
Jef*_*ado 12
用分隔符分割字符串,取不同级别的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();
Run Code Online (Sandbox Code Playgroud)
如果没有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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |