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.
fonte
2010-02-01 20:55:23
Bello, non sapevo di HttpUtility. (Ma penso che sia perché è in System.Web, uno spazio dei nomi che non mi è molto familiare). –
Inoltre, è possibile utilizzare NameValueCollectionExtensions.CopyTo (questo NameValueCollection, IDictionary << string, object >>) per ottenere un IDictionary "reale". – JohannesH
Blah ... Un singolo segno "maggiore di" nei commenti non funziona. Commenti su SO ha bisogno di alcuni miglioramenti. – JohannesH