计算相对路径

ExpandedBlockStart.gif 代码
 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 !=   0 break ;
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/archive/2009/12/15/1624692.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值