热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

如何找到两条绝对路径的相对路径?

如何解决《如何找到两条绝对路径的相对路径?》经验,为你挑选了2个好方法。

给出两条绝对路径,例如

/a/path/to/a

/a/path/to/somewhere/else

我怎样才能获得从一个到另一个的相对路径../a

从某种意义上说,与之相反realpath.



1> Thomas Dicke..:

我在这里回答了类似的问题:解析相对路径而不引用Windows上的当前目录.

这没有标准功能.为此,vi-like-emacs中有一个函数.快速检查apropos relative显示我很少有其他程序可能实现这个:例如revpath.

它可以作为字符串操作(不需要计算工作目录)来完成:

首先找到以路径分隔符结尾的最长公共前缀.

如果没有共同的前缀,那么你就完成了

从当前和目标字符串的(...的副本)中删除公共前缀

用".."替换当前字符串中的每个目录名

在目标字符串前添加(使用路径分隔符)

返回组合字符串

第二步中的" 完成 "假定您想使用相对路径来缩短结果.另一方面,您可能希望使用相对路径名,而不管长度如何.在这种情况下,只需跳过该步骤(结果将更长,但相对).



2> Caleb..:

找到最长的公共路径(在本例中为/a/path/to),并从两个绝对路径中删除它.这会给:

/a

/somewhere/else

现在,将起始路径中的每个路径组件替换../为目标路径,并将结果前置.如果你想从目录else到目录a,那将给你:

../../a

如果你想走另一条路,你会改为:

../somewhere/else


推荐阅读
author-avatar
拍友2502878393
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有