C#計(jì)算兩個(gè)文件的相對(duì)目錄算法的實(shí)例代碼
樓主大菜鳥一只,第一次寫技術(shù)博客,如果有概念錯(cuò)誤或代碼不規(guī)范的地方,還請(qǐng)各位多多批評(píng)指正。話不多說(shuō),來(lá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)看代碼:
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)用部分:
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)文章
C# WinForm 登錄界面的圖片驗(yàn)證碼(區(qū)分大小寫+不區(qū)分大小寫)
這篇文章主要介紹了C# WinForm 登錄界面的圖片驗(yàn)證碼(區(qū)分大小寫+不區(qū)分大小寫),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
MessageBox的Buttons和三級(jí)聯(lián)動(dòng)效果
這篇文章主要介紹了MessageBox的Buttons和三級(jí)聯(lián)動(dòng)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
C#實(shí)現(xiàn)線程安全的簡(jiǎn)易日志記錄方法
這篇文章主要介紹了C#實(shí)現(xiàn)線程安全的簡(jiǎn)易日志記錄方法,比較實(shí)用的功能,需要的朋友可以參考下2014-08-08
C#判斷一個(gè)字符串是否是數(shù)字或者含有某個(gè)數(shù)字的方法
這篇文章主要介紹了C#判斷一個(gè)字符串是否是數(shù)字或者含有某個(gè)數(shù)字的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06

