2012-05-10 9 views
5

Desidero essere in grado di estrarre il nome di una sottodirectory di un URL e salvarlo in una stringa dal lato server in ASP.NET C#. Ad esempio, consente di dire che ho un URL che assomiglia a questo:Estrarre il nome della sottodirectory dall'URL in ASP.NET C#

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

Come dovrei ottenere il valore 'directory2' dall'URL?

+1

Si consiglia di essere un po 'più preciso: Volete l'ultimo subdir prima che la pagina? cioè se l'url fosse 'http: // www.abc.com/foo/bar/baz/default.aspx' vorresti' baz'? – Filburt

+0

Si prega di consultare la mia risposta aggiornata. – jams

risposta

12

classe Uri ha una proprietà chiamata segments:

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

Mi hai battuto. :) –

+0

+1 migliore per evitare la divisione/parsing di stringhe quando c'è qualcosa di utile come Uri. OP non ha specificato se ha sempre voluto l'ultimo sottodir. Forse potresti inserire un'alternativa per questo caso. – Filburt

+0

Grazie! Questo ha funzionato perfettamente! – Kevin

0

È possibile utilizzare split metodo string classe di dividerlo in /

Prova questo se si vuole raccogliere page elenco

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 

Ecco esempio da MSDN. Come utilizzare il metodo 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

userei .LastIndexOf ("/") e lavorare a ritroso da questo.

1

È possibile utilizzare System.Uri per estrarre i segmenti del percorso. Ad esempio:

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

quindi la proprietà "uri.Segments" è una matrice di stringhe (string []) contenente 4 segmenti simili: [ "/", "directory1 /", "directory2 /", "default aspx "].

1

Si tratta di un codice sorther:

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