2010-02-01 19 views

Respuesta

13

Probar HttpUtility.ParseQueryString().

Le devuelve un NameValueCollection de sus claves y valores.

+0

Bien, no sabía sobre HttpUtility. (Pero creo que es porque está en System.Web, un espacio de nombres con el que no estoy tan familiarizado). –

+0

También entonces podrías usar NameValueCollectionExtensions.CopyTo (this NameValueCollection, IDictionary << string, object >>) para obtener un IDictionary "real". – JohannesH

+2

Bla ... Un solo signo "mayor que" en los comentarios no funciona. Los comentarios sobre SO necesitan algunas mejoras. – JohannesH

0

Obtenga la cadena que se encuentra después del signo de interrogación, divida la cadena en el carácter '&'. Luego, para cada cadena que se devuelve, se divide nuevamente en el carácter '='.

Incluso podría crear un método de extensión para él.

public static class StringExtensions 
{ 

    public Dictionary<string, string> ExtractQueryStringValues(this string target) 
    { 

     string queryString = target.Split (target.IndexOf ('?') + 1); 

     string[] keyvaluePairs = queryString.Split ('&'); 

     Dictionary<string, string> result = new Dictionary<string, string>(); 

     foreach(string pair in keyvaluePairs) 
     { 
      var tmp = pair.Split ('='); 

      result.Add (tmp[0], tmp[1]); 
     } 

     return result; 

    } 

} 

Algo así. Recuerde, no es seguro, ya que no maneja cada borde de caja. (Por ejemplo, dada una cadena que no tiene nada después del primer signo de interrogación, etc.), pero debería comenzar.

Cuestiones relacionadas