首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从绝对uri获取相对uri。

从绝对uri获取相对uri。
EN

Stack Overflow用户
提问于 2009-07-10 13:33:08
回答 2查看 14.2K关注 0票数 22

我有一个System.Uri,例如,

代码语言:javascript
复制
var uri = new Uri("http://www.domain.com/foo/bar");

如何仅获取其中的相对Uri:

代码语言:javascript
复制
/foo/bar
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-10 13:35:48

您要查找的是Uri.AbsolutePathUri.PathAndQuery。PathAndQuery将包含查询字符串(您的问题中没有),而AbsolutePath将只给您提供路径。

代码语言:javascript
复制
Console.WriteLine(uri.PathAndQuery);
// or 
Console.WriteLine(uri.AbsolutePath);

...outputs下面这两个结果...

/foo/bar

票数 35
EN

Stack Overflow用户

发布于 2020-05-12 19:03:45

反过来,从相对路径获取绝对URI:-

1.获取所需的目录。要前进一步,只需在目录中添加\即可,例如,对于@"c:\someDirectory\something\something\foo\bar",

如果Directory.GetCurrentDirectory提供@"c:\someDirectory",则执行以下操作:-

代码语言:javascript
复制
Uri uri = new Uri(Directory.GetCurrentDirectory() + 
          @"\something\something\" + relative_path);

代码语言:javascript
复制
Uri uri = new Uri(Directory.GetCurrentDirectory() + 
          "\\something\\something\\" + relative_path);

如果没有@符号,则必须使用另一个\字符对\字符进行转义,以便它读取为字符串。

要继续前进一步,则获取当前目录并使用Directory.GetParent方法获取父目录,然后继续使用DirectoryInfo属性继续前进一步。例如,对于someDirectory\foo\bar

如果Directory.GetCurrentDirectory提供@"c:\someDirectory\somthing\something",则执行以下操作:-

代码语言:javascript
复制
 DirectoryInfo directory = 
     Directory.GetParent(Directory.GetCurrentDirectory()).Parent;

GetParent让你前进一步,返回一个DirectoryInfo对象,现在你可以继续使用Parent属性继续向上,因为你每次都会得到一个DirectoryInfo。因此,我将文件结构向上移动了两次。

代码语言:javascript
复制
 Uri uri = new Uri(directory.FullName + relative_path);

directory.FullName的类型是string,这是您想要的绝对路径,将其连接到您的相对路径并生成一个新的Uri。因此,这是一个绕过的工作,回到过去。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1109538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档