从ASP.NET C中的URL中提取子目录名称

时间:2012-05-10 22:16:22

标签: c# asp.net string url path

我希望能够提取URL子目录的名称,并将其保存到ASP.NET C#中服务器端的字符串中。例如,假设我有一个如下所示的网址:

http://www.example.com/directory1/directory2/default.aspx

如何从URL获取值'directory2'?

5 个答案:

答案 0 :(得分:12)

Uri类有一个名为segments的属性:

var uri = new Uri("http://www.example.com/directory1/directory2/default.aspx");
Request.Url.Segments[2]; //Index of directory2

答案 1 :(得分:2)

这是一个分类代码:

string url = (new Uri(Request.Url,".")).OriginalString

答案 2 :(得分:1)

我会使用.LastIndexOf(“/”)并从中向后工作。

答案 3 :(得分:1)

您可以使用System.Uri提取路径的片段。例如:

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var uri = new System.Uri("http://www.example.com/directory1/directory2/default.aspx");
    }
}

然后是财产" uri.Segments"是一个字符串数组(string []),包含4个这样的段:[" /"," directory1 /"," directory2 /",&# 34; Default.aspx的"。]

答案 4 :(得分:0)

您可以使用split类的string方法将其拆分为/

如果要选择页面目录

,请尝试此操作
string words = "http://www.example.com/directory1/directory2/default.aspx";
string[] split = words.Split(new Char[] { '/'});
string myDir=split[split.Length-2]; // Result will be directory2

以下是MSDN的示例。如何使用split方法。

using System;
public class SplitTest
{
  public static void Main() 
  {
     string words = "This is a list of words, with: a bit of punctuation" +
                           "\tand a tab character.";
     string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' });
     foreach (string s in split) 
     {
        if (s.Trim() != "")
            Console.WriteLine(s);
     }
   }
 }
// The example displays the following output to the console:
//       This
//       is
//       a
//       list
//       of
//       words
//       with
//       a
//       bit
//       of
//       punctuation
//       and
//       a
//       tab
//       character