URL split in C#?

j'ai une url comme example.com/page?a=1&ret=/user/page2 .

j'utilisais string.split('/') pour déterminer les chemins, mais ce cas vous pouvez le voir, il n'est pas très utile. Comment partager L'URL pour obtenir le chemin de la page?

8
demandé sur jdphenix 2009-06-23 03:30:59

9 réponses

si vous fabriquez un système.Objet Uri de votre chaîne, il aura plusieurs propriétés pour différentes parties du chemin:

string path = "http://example.com/page?a=1&ret=/user/page2";
Uri uri = new Uri(path);
Console.WriteLine(uri.AbsolutePath); // Prints "/page"
25
répondu dahlbyk 2014-03-20 05:20:46

si vous voulez dire que vous voulez obtenir le bit" pagee2":

 var ub = new UriBuilder("example.com/page?a=1&ret=/user/page2");
 NameValueCollection nvc = HttpUtility.ParseQueryString(ub.Query);
 string page = nvc[nvc.Count - 1]; // gets "/user/page2"

vous devrez utiliser split pour le reste.

Edit: eh Bien, vous pouvez utiliser le Système.IO.Chemin d'accès.GetFileNameWithoutExtension(page) pour revenir "page2", mais je ne suis pas sûr qu'il se sent le droit pour moi.

System.IO.Path.GetFileNameWithoutExtension("example.com/page?a=1&ret=/user/page2") retourne aussi "page2".

5
répondu Richard Hein 2014-03-20 05:21:00

La Demande.L'objet Url (Uri) a beaucoup de propriétés utiles relatives au chemin. Il peut vous donner toute L'interrogation pour enlever l'url complète si c'est ce que vous cherchez?

vous pouvez également effectuer un serveur.MapPath sur la page elle-même et ensuite utiliser L'objet FileInfo pour visualiser diverses parties du fichier lui-même.

4
répondu Robin Day 2009-06-22 23:35:16

vous pouvez le charger dans un URI objet et obtenir le Uri.Cheminabsolu "151920920 de la propriété".

3
répondu heavyd 2009-06-22 23:35:34

est-ce un ASP.NET projet? Dans votre HttpHandler / Page vous pouvez simplement utiliser l'objet Request:

string path = HttpContext.Request.Path;

si vous n'avez pas de HttpContext, système.Uri vous donne quelque chose de similaire:

string path = new Uri("example.com/page?a=1&ret=/user/page2").AbsolutePath;
2
répondu Jeff Meatball Yang 2014-03-20 05:21:34

Système d'archivage.Uri de la classe. Il séparera votre url en fragments.

0
répondu 2009-06-22 23:36:46

avez-vous envisagé D'utiliser L'UriBuilder... voir pile question 479799

utilisez d'abord cela, puis divisez le .Propriété Path

0
répondu bytebender 2017-05-23 10:27:26

vous pourriez également envisager d'utiliser L'API de routage buit inside ASP.net 2.0 qui vous donnera le contrôle fin grained sur vos routes URL

0
répondu Rony 2009-06-23 00:02:40

cela semble comme un bon cas à utiliser System.Uri :

Uri uri = new Uri("example.com/page?a=1&ret=/user/page2");
System.Windows.Forms.MessageBox.Show(
"Absolute URI: " + uri.AbsoluteUri + "\r\n" +
"Absolute Path: " + uri.AbsolutePath + "\r\n" +
"Local path: " + uri.LocalPath + "\r\n" +
"Host: " + uri.Host + "\r\n" +
"Port: " + uri.Port + "\r\n" +
"Query: " + uri.Query + "\r\n");
0
répondu jdphenix 2014-03-20 05:20:59