2010-02-01 4 views

risposta

13

Prova HttpUtility.ParseQueryString().

Ti restituisce un NameValueCollection delle tue chiavi e valori.

+0

Bello, non sapevo di HttpUtility. (Ma penso che sia perché è in System.Web, uno spazio dei nomi che non mi è molto familiare). –

+0

Inoltre, è possibile utilizzare NameValueCollectionExtensions.CopyTo (questo NameValueCollection, IDictionary << string, object >>) per ottenere un IDictionary "reale". – JohannesH

+2

Blah ... Un singolo segno "maggiore di" nei commenti non funziona. Commenti su SO ha bisogno di alcuni miglioramenti. – JohannesH

0

Ottenere la stringa che si trova dopo il punto interrogativo, dividere la stringa sul carattere '&'. Quindi, per ogni stringa che viene restituita, dividere nuovamente il carattere '='.

Si potrebbe anche creare un metodo di estensione per questo.

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; 

    } 

} 

Qualcosa del genere. Ricorda, non è sicuro, in quanto non gestisce ogni caso limite. (Ad esempio, data una stringa che non ha nulla dopo il primo punto interrogativo, ecc ...), ma dovrebbe iniziare.

Problemi correlati