写一个函数算出两个文件的相对路径
程序员文章站
2022-05-09 22:58:09
...
如$a=‘/a/b/c/d/e.php’;
$b='/a/b/12/34/c.php';
计算出$b相对于$a的相对路径应该是../../c/d
个人答案如下:
首先我感觉b相对于a的路径应该是../../12/34才对,a相对于b才是../../c/d
函数如下,求path1相对于path2的相对路径
public static string getPath2(string path1, string path2)
{
string result = "";
string tempstr = "";
string[] arr1 = path1.Split('/');
string[] arr2 = path2.Split('/');
int parentNum = 0;
if (arr2.Length > arr1.Length)
{
parentNum= arr2.Length - arr1.Length;
}
for (int i = 0; i < arr1.Length - 1; i++)
{
if (i < arr2.Length && arr1[i] == arr2[i])
{
continue;
}
else
{
result += result == "" ? arr1[i] : "/" + arr1[i];
parentNum++;
}
}
if (parentNum > 0)
{
for (int i = 0; i < parentNum; i++)
{
tempstr += tempstr == "" ? ".." : "/..";
}
result = tempstr + (result == "" ? "" : "/" + result);
}
return result;
}
测试结果:
public static void Main()
{
Console.WriteLine(getPath2("/a/c/a.txt","/a/b/c/d/b.txt"));
Console.WriteLine(getPath2("/a/b/c/d/e/f/a.txt", "/a/b/c/d/b.txt"));
Console.WriteLine(getPath2("/a/b/12/34/a.txt", "/a/b/c/d/b.txt"));
Console.ReadKey();
}
上一篇: log4j中使用相对路径
下一篇: Qt pro文件中的相对路径设置