C# 从虚拟路径获取文件夹深度

C# 从虚拟路径获取文件夹深度,c#,.net-3.5,C#,.net 3.5,我正在尝试从给定路径获取文件夹位置 它自身的路径不可访问,因此我无法使用目录或目录信息类 结果应该是: C:\返回-1 c:\FolderA返回0 c:\FolderA\FolderB返回1 我使用了以下公式,但1和2之间的结果是相同的:-(: 测试: [Test] public void Get_Level_Root_Depth_Test() { var result = StringModifier.GetFolderLevelDepth("c:\\");

我正在尝试从给定路径获取文件夹位置 它自身的路径不可访问,因此我无法使用
目录
目录信息

结果应该是:

  • C:\返回-1
  • c:\FolderA返回0
  • c:\FolderA\FolderB返回1
  • 我使用了以下公式,但1和2之间的结果是相同的:-(:

    测试:

    [Test]
        public void Get_Level_Root_Depth_Test()
        {
            var result = StringModifier.GetFolderLevelDepth("c:\\");
            Assert.AreEqual(-1,result);
        }
        [Test]
        public void Get_Level_One_Depth_Test()
        {
            var result = StringModifier.GetFolderLevelDepth("c:\\Folder1");
            Assert.AreEqual(0, result);
        }
        [Test]
        public void Get_Level_Two_Depth_Test()
        {
            var result = StringModifier.GetFolderLevelDepth("c:\\Folder1\\Folder2");
            Assert.AreEqual(1, result);
        }
    
    或:

    或:


    此代码应说明最可能的输入条件:

    int res = -99;
    string input = fullPath.Trim();
    if (input.Length > 0 && input.Contains(@"\"))
    {
        if (input.Substring(input.Length - 1, 1) == @"\") input = input.Substring(0, input.Length - 1);
        res = input.Split('\\').Length - 2;
    }
    return res;
    

    此代码应说明最可能的输入条件:

    int res = -99;
    string input = fullPath.Trim();
    if (input.Length > 0 && input.Contains(@"\"))
    {
        if (input.Substring(input.Length - 1, 1) == @"\") input = input.Substring(0, input.Length - 1);
        res = input.Split('\\').Length - 2;
    }
    return res;
    

    您可以这样做:

    result = fullPath.Split('\\', StringSplitOptions.RemoveEmptyEntries).Length;
    
    StringSplitOptions.RemoveEmptyEntries
    会在路径以反斜杠结尾时丢弃最后一个条目;这会导致代码不计算结尾处的“空目录名”


    请注意,此代码不会考虑当前目录(
    )和父目录(
    )特殊目录。

    您可以这样做:

    result = fullPath.Split('\\', StringSplitOptions.RemoveEmptyEntries).Length;
    
    StringSplitOptions.RemoveEmptyEntries
    会在路径以反斜杠结尾时丢弃最后一个条目;这会导致代码不计算结尾处的“空目录名”

    请注意,此代码不会考虑当前目录(
    )和父目录(
    )特殊目录。

    @Maro-Yes(我认为您可能需要):@Maro-Yes(我认为您可能需要):)
    result = fullPath.Split('\\', StringSplitOptions.RemoveEmptyEntries).Length;