如题,现有目录路径A和目录路径B,如何算出B相对于A的位置?(假定A与B都处于同分区下)

解决方案 »

  1.   

    应该可以吧……D:\abc\def\ghi
    D:\abc\opq\rst做字符串分割操作(\)
    上面得到字符串数组A
    0 D:
    1 abc
    2 def
    3 ghi
    下面得到字符串数组B
    0 D:
    1 abc
    2 opq
    3 rst
    然后比较嘛……先找出一样的到哪里
    如上面找到1 abc
    那么B相对于A的路径就是
    B[2] - B[3] 两个..\ (我记得上级目录是这样表示)
    再加上A[2] + "\" + A[3]大概这样能实现吧……
      

  2.   

    string patha= "C:\\aaa\\bbb";
               string pathb= "C:\\aaa\\bbb\\ccc\\ddd\\eee\\fff";
               pathb = pathb.Replace(patha + "\\", "");
               string temp = pathb.Replace("\\", "");
               int n = pathb.Length - temp.Length;
               pathb = pathb.Substring(pathb.LastIndexOf("\\")+1);
               for (int i = 0; i < n; i++)
               {
                   pathb = "..\\" + pathb;
               }
               Console.WriteLine("pathb的相对路径是:"+pathb);编译通过...
      

  3.   

    什么叫相对位置啊
    是不是
    string A = @"C:\a\b\c";
    string B = @"C:\a\b";
    B相对于A的位置: @"..\"string B = @"C:\a\b\c";
    string A = @"C:\a\b";
    B相对于A的位置: @"\c"这样的话,代码如下string A = @"C:\a\b\c";
    string B = @"C:\a\b";
    string temp = "";
    string[] a = A.Split('\\');
    string[] b = B.Split('\\');if (a.Length > b.Length)
    {
        int n = a.Length - b.Length;
        for (int i = 0; i < n; i++)
        {
            temp += @"..\";
        }
    }
    else
        temp = B.Replace(A, "");temp即所求
      

  4.   

    提个思路,将两路径前面的相同部分截去,假设是求A目录相对于B目录的路径,将B目录绝对路径字符串经过前面截取操作后剩下的部分,每一级目录用替换成 ..\ ,最后加上A目录绝对路径字符串经过前面截取操作后剩下的部分,这就是该相对路径了