当前位置:  编程技术>.net/c#/asp.net

C#计算两个文件的相对目录算法的实例代码

    来源: 互联网  发布时间:2014-10-23

    本文导语:  楼主大菜鸟一只,第一次写技术博客,如果有概念错误或代码不规范的地方,还请各位多多批评指正。话不多说,来看题: 前一阵子开发了一个用户控件,里面调用了很多css,js等资源文件,而引用控件的页面所在目录是不同...

楼主大菜鸟一只,第一次写技术博客,如果有概念错误或代码不规范的地方,还请各位多多批评指正。话不多说,来看题:

前一阵子开发了一个用户控件,里面调用了很多css,js等资源文件,而引用控件的页面所在目录是不同的。问题出来了:如果目录不同,那么控件里引用css,js资源文件的路径也会相应变化。现在已知两个文件相对于网站根目录的路径,如何计算相对路径呢?请看代码:

代码如下:

public string GetRelativePath(string path1, string path2)
{
            string[] path1Array = path1.Split('/');
            string[] path2Array = path2.Split('/');
            //
            int s = path1Array.Length >= path2Array.Length ? path2Array.Length : path1Array.Length;
            //两个目录最底层的共用目录索引
            int closestRootIndex = -1;
            for (int i = 0; i < s; i++)
            {
                if (path1Array[i] == path2Array[i])
                {
                    closestRootIndex = i;
                }
                else
                {
                    break;
                }
            }
            //由path1计算 ‘../'部分
            string path1Depth = "";
            for (int i = 0; i < path1Array.Length; i++)
            {
                if (i > closestRootIndex + 1)
                {
                    path1Depth += "../";
                }
            }
            //由path2计算 ‘../'后面的目录
            string path2Depth = "";
            for (int i = closestRootIndex + 1; i < path2Array.Length; i++)
            {
                path2Depth += "/" + path2Array[i];
            }
            path2Depth = path2Depth.Substring(1);

            return path1Depth + path2Depth;
}

我的算法,第一步算出两个目录的最底层父目录,第二步算出目录1需要向上级目录返回次数(../个数),第三步算出最底层父目录到目录2的相对路径,第四步把第二步和第三步的结果相加就是我们要的答案了。

调用部分:

代码如下:

string path1 = "/Manage/Permissions/RoleManage.aspx";
string path2 = "/Manage/plugin/jquery-easyui/jquery.easyui.min.js";
string result = GetRelativePath(path1, path2);

得到结果:../plugin/jquery-easyui/jquery.easyui.min.js


    
 
 

您可能感兴趣的文章:

  • C#递归实现显示文件夹及所有文件并计算其大小的方法
  • C#根据年月日计算星期几的函数小例子
  • C#获取计算机名,IP,MAC信息实现代码
  • C#由当前日期计算相应的周一和周日的实例代码
  • C#计算两个时间差的方法代码分享
  • C#计算代码执行时间的方法
  • c#入门之实现简易存款利息计算器示例
  • C#中计算时间差中的小数问题解决
  • C#和SQL实现的字符串相似度计算代码分享
  • c#日期间隔计算示例
  • c# DateTime常用操作实例(datetime计算时间差)
  • C#通过经纬度计算2个点之间距离的实现代码
  • C#中控制远程计算机的服务的方法
  • C#编写的windows计算器的实例代码
  • 哈希算法计算 Generic Hash and HMAC Program
  • 计算机视觉算法 OpenVIDIA
  • PHP 素数计算算法示例
  • 如何在Linux内核中调用MD5算法计算文件的MD5值?
  • 如何用java实现递归?给n个整数,写出计算结果为24的算法,要所有数都用上,只用加减乘除实现
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php根据身份证号码计算年龄的实例代码
  • VC++简单实现关机、重启计算机实例代码
  • Java计算几何图形面积的实例代码
  • Python高级应用实例对比:高效计算大文件中的最长行的长度
  • python计算最大优先级队列实例
  • Android计算器简单逻辑实现实例分享
  • JAVA计算两个日期相差的实例
  • lbs基于位置服务(Location Based Service)中如何计算二点距离
  • Java计算机代数计算工具 Symja
  • 基于Docker容器的云计算平台搭建实战
  • rsync客户端如何从远程计算机上传输多个文件到本地计算机?
  • 云计算之Docker容器技术如何落地?
  • 可信计算你知道嘛?红旗的可信计算你知道嘛?
  • numpy官方下载安装以及numpy详细使用教程(Python科学计算)
  • php计算日期相差天数(日期计算)代码
  • 根据身份证号码计算出生日期、年龄、性别(18位) 根据入职时间计算工龄。
  • 求救:配置samba后,在Win9x计算机上能搜索到Linux计算机,但网上邻居里处看不到,这是为什么?
  • 计算机代数系统 Maxima
  • Android 房贷计算器 houseloan
  • C++数值计算核心库 Zero
  • 关于计算机方面的论文?
  • 计算器 eCalc
  • 高精度浮点计算器 Genius
  • Linux计算器 Extcalc
  • C++符号计算库 GiNaC
  • 计算几何算法库 CGAL
  • Linux里计算器的一个问题 关于效率的!
  • 可编程计算器 phoc


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3