获取路径2相对于路径1的相对路径


摘自: 依依杂菜馆

**/ /// <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;
}


转载于:https://www.cnblogs.com/ClarkChan/archive/2007/07/23/828772.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值