从虚拟路径获取文件夹深度
本文关键字:文件夹 深度 获取 路径 虚拟 | 更新日期: 2023-09-27 18:35:40
我正在尝试从给定路径获取文件夹位置它本身的路径无法访问,因此我无法使用Directory
或DirectoryInfo
类参考帖子
结果应如下所示:
- C:''返回 -1
- c:''FolderA 返回 0
- 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
会导致它丢弃最后一个条目;这会导致代码不计算末尾的"空目录名称"。
请注意,此代码不会考虑当前目录 ( .
) 和父目录 ( ..
) 特殊目录。