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:\\");
目录
或目录信息
类
结果应该是:
[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;