2012-05-10 38 views
5

Tôi muốn có thể trích xuất tên của thư mục con của một URL và lưu nó vào một chuỗi từ phía máy chủ trong ASP.NET C#. Ví dụ: giả sử tôi có URL trông giống như sau:Trích xuất tên thư mục con từ URL trong ASP.NET C#

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

Làm cách nào để nhận giá trị 'directory2' từ URL?

+1

Bạn có thể muốn có một chút chính xác hơn: Bạn muốn subdir cuối cùng trước khi trang? tức là nếu url là 'http: // www.abc.com/foo/bar/baz/default.aspx' bạn muốn' baz'? – Filburt

+0

Vui lòng xem câu trả lời cập nhật của tôi. – jams

Trả lời

12

Uri lớp có một tính chất gọi segments:

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

Bạn đánh tôi với nó. :) –

+0

+1 tốt nhất để tránh phân tách chuỗi/phân tích cú pháp khi có thứ gì đó tiện dụng như Uri. OP đã không chỉ định nếu anh ta luôn muốn các tiểu thư cuối cùng - có thể bạn có thể ném vào một thay thế cho trường hợp này. – Filburt

+0

Cảm ơn! Điều này làm việc hoàn hảo! – Kevin

0

Bạn có thể sử dụng phương pháp splitstring lớp để chia nó trên /

Hãy thử điều này nếu bạn muốn chọn trang thư mục

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 

Dưới đây là ví dụ từ MSDN. Cách sử dụng phương thức 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 
1

Tôi muốn sử dụng .LastIndexOf ("/") và làm việc ngược từ đó.

1

Bạn có thể sử dụng System.Uri để trích xuất các phân đoạn của đường dẫn. Ví dụ:

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"); 
    } 
} 

Sau đó tài sản "uri.Segments" là một mảng chuỗi (string []) chứa 4 phân đoạn như thế này: [ "/", "directory1 /", "directory2 /", "mặc định .aspx "].

1

Đây là một mã sorther:

string url = (new Uri(Request.Url,".")).OriginalString 
Các vấn đề liên quan