2012-05-10 12 views
5

Bir URL'nin alt dizininin adını ayıklamak ve ASP.NET C# içindeki sunucu tarafındaki bir dizeye kaydetmek istiyorum.ASP.NET C'deki URL'den alt dizin adı ayıkla #

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

nasıl URL'den değer 'dizin2' alacağı: Örneğin, ben şöyle bir URL'ye sahip Diyelim? Eğer sayfa dizini

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 
İşte

MSDN'den örnektir almak istiyorsanız

+1

Biraz daha hassas olmak isteyebilirsiniz: Sayfanın önceki son Subdir istiyor? yani url 'http: // www.abc.com/foo/bar/baz/default.aspx' ise' baz' istersiniz? – Filburt

+0

Lütfen güncellenmiş yanıtıma bakın. – jams

cevap

12

Uri sınıf segments adlı bir özelliğe sahiptir.

+0

Beni ona yendin. :) –

+0

+1, Uri gibi kullanışlı bir şey olduğunda dizgeyi bölme/ayrıştırmadan kaçınmak için en iyisi. OP, her zaman son alt adımı isteyip istemediğini belirtmedi - belki de bu dava için bir alternatif atabilirsiniz. – Filburt

+0

Teşekkürler! Bu mükemmel çalıştı! – Kevin

0

Bunu deneyin /

üzerine bölmek string sınıfının split yöntemi kullanabilirsiniz. split yöntemi nasıl kullanılır.

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

Ben .LastIndexOf kullanmak ("/") ve bu geriye doğru olurdu:

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

Yolun bölümlerini ayıklamak için System.Uri'yi kullanabilirsiniz. Örneğin: O özelliği "uri.Segments"

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

Böyle 4 kısımları içeren bir dize dizisi (string []) aşağıdaki gibidir: [ "/", "dizin1 /", "dizin2 /", "varsayılan .aspx "].

1

Bu sorther kodudur:

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