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

本文关键字:文件夹 深度 获取 路径 虚拟 | 更新日期: 2023-09-27 18:35:40

我正在尝试从给定路径获取文件夹位置它本身的路径无法访问,因此我无法使用DirectoryDirectoryInfo类参考帖子

结果应如下所示:

  1. C:''返回 -1
  2. c:''FolderA 返回 0
  3. c:''FolderA''FolderB 返回 1

我正在使用以下内容,但 1 和 2 之间的结果是相同的:-(:

  public static int GetFolderLevelDepth(string fullPath)
        {
            if(string.IsNullOrEmpty(fullPath))
            {
                return -99;
            }
            int result = fullPath.Count(x => x == '''');
            return result -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;
fullPath = fullPath.Trim();
if (fullPath[fullPath.Length - 1] != '''')
    return fullPath.Count(x => x == '''') - 1;
return fullPath.Count(x => x == '''') - 2;

或:

return fullPath.Split('''').Length - 2

你可以做这样的事情:

result = fullPath.Split('''', StringSplitOptions.RemoveEmptyEntries).Length;

如果路径以反斜杠结尾,StringSplitOptions.RemoveEmptyEntries会导致它丢弃最后一个条目;这会导致代码不计算末尾的"空目录名称"。

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