计算相对路径

代码
 1         #region 计算相对路径
 2 
 3         /// <summary>
 4         /// 获取路径2相对于路径1的相对路径
 5         /// </summary>
 6         /// <param name="strPath1">路径1</param>
 7         /// <param name="strPath2">路径2</param>
 8         /// <returns>相对路径</returns>
 9         private string GetRelativePath(string strPath1, string strPath2)
10         {
11             //格式化字符串成标准的格式
12 
13             strPath1 = strPath1.Replace("//""\\");
14             strPath1 = strPath1.Replace("/""\\");
15             strPath1 = strPath1.Replace(@"\\""\\");
16             strPath2 = strPath2.Replace("//""\\");
17             strPath2 = strPath2.Replace("/""\\");
18             strPath2 = strPath2.Replace(@"\\""\\");
19             int intIndex = -1, intPos = strPath1.IndexOf('\\');
20 
21             /*以"\"为分界比较从开始处到第一个"\"处对两个地址进行比较,如果相同则扩展到
22             下一个"\"处;直到比较出不同或第一个地址的结尾*/
23 
24             while (intPos >= 0)
25             {
26                 intPos++;
27                 if (string.Compare(strPath1, 0, strPath2, 0, intPos, true!= 0break;
28                 intIndex = intPos;
29                 intPos = strPath1.IndexOf('\\', intPos);
30             }
31 
32             /*如果从不是第一个"\"处开始有不同,则从最后一个发现有不同的"\"处开始将strPath2
33             的后面部分赋值给自己,在strPath1的同一个位置开始望后计算每有一个"\"则在strPath2
34             的前面加上一个"..\"(经过转义后就是"..\\")*/
35 
36             if (intIndex >= 0)
37             {
38                 strPath2 = strPath2.Substring(intIndex);
39                 intPos = strPath1.IndexOf("\\", intIndex);
40                 while (intPos >= 0)
41                 {
42                     strPath2 = "..\\" + strPath2;
43                     intPos = strPath1.IndexOf("\\", intPos + 1);
44                 }
45             }
46 
47             //否则直接返回strPath2
48             return strPath2;
49         }
50 
51         #endregion
原文地址:https://www.cnblogs.com/kakaliush/p/1624692.html