c# 获取相对路径

本文修正了原文地址:

http://blog.csdn.net/lynnlin1122/article/details/1518648

的获取两个目录相对路径的方法的bug,在这里跟大家分享,欢迎指正。  

/// <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) != 0) break;

                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.Replace("\\","/");

        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值