.net 从绝对uri获取相对uri
我有一个System.Uri,例如.net 从绝对uri获取相对uri,.net,.net,我有一个System.Uri,例如 var uri = new Uri("http://www.domain.com/foo/bar"); 如何仅从中获取相对Uri: /foo/bar 你要找的是非此即彼。PathAndQuery将包括querystring(您的问题中没有),而AbsolutePath将只提供路径 Console.WriteLine(uri.PathAndQuery); // or Console.WriteLine(uri.AbsolutePath); …为这两个输出
var uri = new Uri("http://www.domain.com/foo/bar");
如何仅从中获取相对Uri:
/foo/bar
你要找的是非此即彼。PathAndQuery将包括querystring(您的问题中没有),而AbsolutePath将只提供路径
Console.WriteLine(uri.PathAndQuery);
// or
Console.WriteLine(uri.AbsolutePath);
…为这两个输出以下结果
/foo/bar
反过来说,就是从相对路径获取绝对URI:- 1.获取所需的目录。 只需在目录中添加\即可,例如for @“c:\someDirectory\something\something\foo\bar” 如果Directory.GetCurrentDirectory给出@“c:\someDirectory”,则执行以下操作:-
Uri uri = new Uri(Directory.GetCurrentDirectory() +
@"\something\something\" + relative_path);
DirectoryInfo directory =
Directory.GetParent(Directory.GetCurrentDirectory()).Parent;
或
Uri uri = new Uri(Directory.GetCurrentDirectory() +
"\\something\\something\\" + relative_path);
如果没有@符号,则必须使用另一个\字符转义\字符,以便将其读取为字符串
若要更进一步,请获取当前目录并使用
方法获取DirectoryInfo并继续使用
父属性将继续前进一步,例如
someDirectory\foo\bar
Uri uri = new Uri(Directory.GetCurrentDirectory() +
"\\something\\something\\" + relative_path);
如果Directory.GetCurrentDirectory提供
@“c:\someDirectory\somthing\something”然后执行以下操作:-
Uri uri = new Uri(Directory.GetCurrentDirectory() +
@"\something\something\" + relative_path);
DirectoryInfo directory =
Directory.GetParent(Directory.GetCurrentDirectory()).Parent;
GetParent向上一步并返回一个DirectoryInfo对象
现在,您可以继续使用Parent属性,以使其在运行时继续上升
每次都能得到一个目录信息。所以我将文件结构向上移动
两次
directory.FullName的类型为string,它是您选择的绝对路径
如果需要,将其连接到相对路径并生成新的Uri。
因此,这是一个倒退的解决方法。
PathAndQuery
不带片段,例如“”将只为您提供/q?x=y
。