如何将路径拆分为路径集

时间:2016-10-12 12:01:46

标签: c# .net arrays string

我有一个路径变量,例如'Customer \\ Calls \\ A1 \\ A2 \\ A3 \\ A4'.Irom我想把它分成像

这样的数组
'Customer'
'Customer\Calls'
'Customer\Calls\A1'
'Customer\Calls\A1\A2'
'Customer\Calls\A1\A2\A3'
'Customer\Calls\A1\A2\A3\A4'

如果我们这样做

 string[] directories = currentFolderPath.Split(Path.DirectorySeparatorChar);

我们将获得一组文件夹,但它不会进入上述结构

任何人都可以建议更好的方法

5 个答案:

答案 0 :(得分:2)

获取父目录,直到到达根目录

如果它是绝对路径

this.sidenav.toggle()

如果是相对路径

private static IEnumerable<string> SplitPath(string path){
    do{
        yield return path;
        path=Path.GetDirectoryName(path);
    } while(path!=null);
}

答案 1 :(得分:2)

string path = @"Customer\Calls\A1\A2\A3\A4";
var sections = path.Split('\\').ToList();
var result = Enumerable.Range(0, sections.Count)
                       .Select(index => string.Join(@"\", sections.Take(index + 1)))
                       .ToList();

//Result:
// Customer
// Customer\Calls
// Customer\Calls\A1
// Customer\Calls\A1\A2
// Customer\Calls\A1\A2\A3
// Customer\Calls\A1\A2\A3\A4

答案 2 :(得分:0)

从您的帖子中发现并不是很明显,但如果您需要对阵列中的每个项目执行某些操作,我可能会采用这种方法:

string path = string.Empty;
"Customer\\Calls\\A1\\A2\\A3\\A4".Split(new Char[] { '\\' }).ToList().ForEach(
        part => {
            path = Path.Combine(path, part);
            // Do stuff!
        }
);

答案 3 :(得分:0)

            // easy and simple try this
            string path = @"Customer\Calls\A1\A2\A3\A4";
            string[] pathArr =  path.Split('\\');
            List<string> list = new List<string>();
            for (int i = 0; i < pathArr.Length; i++)
            {
                string temp = pathArr[i];
                if (i > 0)
                {
                    temp = list[i - 1].ToString() + @"\" + temp;
                }
                list.Add(temp);

            }

答案 4 :(得分:0)

stop