我试图从给定路径获取文件夹位置
它本身的路径无法访问,因此我无法使用Directory
或DirectoryInfo
类Reference post
结果应该是这样的:
我使用以下内容但是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);
}
答案 0 :(得分:2)
此代码应考虑最可能的输入条件:
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;
答案 1 :(得分:1)
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
答案 2 :(得分:1)
你可以这样做:
result = fullPath.Split('\\', StringSplitOptions.RemoveEmptyEntries).Length;
如果路径以反斜杠结尾, StringSplitOptions.RemoveEmptyEntries
会导致它丢弃最后一个条目;这导致代码不计算最后的“空目录名称”。
请注意,此代码不会考虑当前目录(.
)和父目录(..
)特殊目录,虽然。