如何从Uri获取目录

tom*_*ene 13 .net

例如,如果我有

http://www.example.com/mydirectory/myfile.aspx

我怎样才能得到

http://www.example.com/mydirectory

我正在寻找一个.NET函数调用.

Rub*_*ias 43

试试这个(没有字符串操作):

Uri baseAddress = new Uri("http://www.example.com/mydirectory/myfile.aspx?id=1");
Uri directory = new Uri(baseAddress, "."); // "." == current dir, like MS-DOS
Console.WriteLine(directory.OriginalString);
Run Code Online (Sandbox Code Playgroud)


Jos*_*non 13

这是一个非常干净的方式.还有一个优点,你可以扔任何网址:

var uri = new Uri("http://www.example.com/mydirectory/myfile.aspx?test=1");
var newUri = new Uri(uri, System.IO.Path.GetDirectoryName(uri.AbsolutePath));
Run Code Online (Sandbox Code Playgroud)

注意:删除了Dump()方法.(它来自LINQPad,这是我验证这个!)

  • 嗯...哈哈傻测试地面陈述!Dump()是LINQPad的内部方法,通常在发布前先测试它们! (2认同)

Rob*_*b C 0

没有属性,但解析它并不难:

Uri uri = new Uri("http://www.example.com/mydirectory/myfile.aspx");
string[] parts = uri.LocalPath.Split('/');
if(parts.Length >= parts.Length - 2){
     string directoryName = parts[parts.Length - 2];
}
Run Code Online (Sandbox Code Playgroud)

  • 请查看下面鲁本斯·法里亚斯的答案,因为它比这个要好得多。 (5认同)