5

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

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

如何从 URL 中获取值“directory2”?

4

5 回答 5

12

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

var uri = new Uri("http://www.example.com/directory1/directory2/default.aspx");
Request.Url.Segments[2]; //Index of directory2
于 2012-05-10T22:22:19.933 回答
2

这是一个分拣机代码:

string url = (new Uri(Request.Url,".")).OriginalString
于 2013-02-20T17:47:12.960 回答
1

我会使用 .LastIndexOf("/") 并从那里向后工作。

于 2012-05-10T22:22:30.380 回答
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/”、“default.aspx”]。

于 2012-05-10T22:36:16.597 回答
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
于 2012-05-10T22:18:54.237 回答