欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#計(jì)算兩個(gè)文件的相對(duì)目錄算法的實(shí)例代碼

 更新時(shí)間:2013年09月06日 15:50:54   作者:  
現(xiàn)在已知兩個(gè)文件相對(duì)于網(wǎng)站根目錄的路徑,如何計(jì)算相對(duì)路徑呢,有需要的朋友可以參考一下

樓主大菜鳥(niǎo)一只,第一次寫(xiě)技術(shù)博客,如果有概念錯(cuò)誤或代碼不規(guī)范的地方,還請(qǐng)各位多多批評(píng)指正。話不多說(shuō),來(lái)看題:

前一陣子開(kāi)發(fā)了一個(gè)用戶控件,里面調(diào)用了很多css,js等資源文件,而引用控件的頁(yè)面所在目錄是不同的。問(wèn)題出來(lái)了:如果目錄不同,那么控件里引用css,js資源文件的路徑也會(huì)相應(yīng)變化?,F(xiàn)在已知兩個(gè)文件相對(duì)于網(wǎng)站根目錄的路徑,如何計(jì)算相對(duì)路徑呢?請(qǐng)看代碼:

復(fù)制代碼 代碼如下:

public string GetRelativePath(string path1, string path2)
{
            string[] path1Array = path1.Split('/');
            string[] path2Array = path2.Split('/');
            //
            int s = path1Array.Length >= path2Array.Length ? path2Array.Length : path1Array.Length;
            //兩個(gè)目錄最底層的共用目錄索引
            int closestRootIndex = -1;
            for (int i = 0; i < s; i++)
            {
                if (path1Array[i] == path2Array[i])
                {
                    closestRootIndex = i;
                }
                else
                {
                    break;
                }
            }
            //由path1計(jì)算 ‘../'部分
            string path1Depth = "";
            for (int i = 0; i < path1Array.Length; i++)
            {
                if (i > closestRootIndex + 1)
                {
                    path1Depth += "../";
                }
            }
            //由path2計(jì)算 ‘../'后面的目錄
            string path2Depth = "";
            for (int i = closestRootIndex + 1; i < path2Array.Length; i++)
            {
                path2Depth += "/" + path2Array[i];
            }
            path2Depth = path2Depth.Substring(1);

            return path1Depth + path2Depth;
}

我的算法,第一步算出兩個(gè)目錄的最底層父目錄,第二步算出目錄1需要向上級(jí)目錄返回次數(shù)(../個(gè)數(shù)),第三步算出最底層父目錄到目錄2的相對(duì)路徑,第四步把第二步和第三步的結(jié)果相加就是我們要的答案了。

調(diào)用部分:

復(fù)制代碼 代碼如下:

string path1 = "/Manage/Permissions/RoleManage.aspx";
string path2 = "/Manage/plugin/jquery-easyui/jquery.easyui.min.js";
string result = GetRelativePath(path1, path2);

得到結(jié)果:../plugin/jquery-easyui/jquery.easyui.min.js

相關(guān)文章

最新評(píng)論