一个获取相对路径的方法(C#)

    技术2022-05-11  67

    /// <summary>/// 获取路径2相对于路径1的相对路径/// </summary>/// <param name="strPath1">路径1</param>/// <param name="strPath2">路径2</param>/// <returns>返回路径2相对于路径1的路径</returns>/// <example>/// string strPath = GetRelativePath(@"C:/WINDOWS/system32", @"C:/WINDOWS/system/*.*" );/// //strPath == @"../system/*.*"/// </example>public static string GetRelativePath(string strPath1, string strPath2){    if (!strPath1.EndsWith("//" )) strPath1 += "//";    //如果不是以"/"结尾的加上"/"    int intIndex = -1, intPos = strPath1.IndexOf('//');       ///以"/"为分界比较从开始处到第一个"/"处对两个地址进行比较,如果相同则扩展到       ///下一个"/"处;直到比较出不同或第一个地址的结尾.    while(intPos >= 0)    {        intPos ++;        if (string.Compare(strPath1, 0, strPath2, 0, intPos, true!= 0break;        intIndex = intPos;        intPos = strPath1.IndexOf('//', intPos);    }       ///如果从不是第一个"/"处开始有不同,则从最后一个发现有不同的"/"处开始将strPath2       ///的后面部分付值给自己,在strPath1的同一个位置开始望后计算每有一个"/"则在strPath2       ///的前面加上一个"../"(经过转义后就是"..//").    if (intIndex >= 0)    {        strPath2 = strPath2.Substring(intIndex);        intPos = strPath1.IndexOf("//", intIndex);        while(intPos >= 0)        {            strPath2 = "..//" + strPath2;            intPos = strPath1.IndexOf("//", intPos + 1);        }    }       //否则直接返回strPath2    return strPath2;}

      width="728" scrolling="no" height="90" frameborder="0" align="middle" src="http://l.thec.cn/lynnlin/googleContent728x90.htm" marginheight="0" marginwidth="0">

    最新回复(0)