Je voudrais analyser une chaîne comme « p1 = 6 & p2 = 7 & p3 = 8 » dans une NameValueCollection.
Quelle est la façon la plus élégante de le faire quand vous n’avez pas accès à l’objet Page.Request ?
Je voudrais analyser une chaîne comme « p1 = 6 & p2 = 7 & p3 = 8 » dans une NameValueCollection.
Quelle est la façon la plus élégante de le faire quand vous n’avez pas accès à l’objet Page.Request ?
Il existe un utilitaire intégré de .NET pour cela : HttpUtility.ParseQueryString
Beaucoup de réponses sont fournissant des exemples, parce que de la a accepté de répondre à la dépendance sur le Système.Web. À partir de la Microsoft.AspNet.WebApi.Client de package NuGet il y a un UriExtensions.ParseQueryString, méthode qui peut également être utilisé:
var uri = new Uri("http://stackoverflow.com/a/22167748?p1=6&p2=7&p3=8");
NameValueCollection query = uri.ParseQueryString();
Donc, si vous voulez éviter le Système.Web de dépendance et ne veulent pas rouler, c'est une bonne option.
J'ai besoin d'une fonction qui est un peu plus polyvalent que ce qui a été déjà fournis lorsque vous travaillez avec des OLSC requêtes.
Voici ma solution:
Public Shared Function ParseQueryString(ByVal uri As Uri) As System.Collections.Specialized.NameValueCollection
Dim result = New System.Collections.Specialized.NameValueCollection(4)
Dim query = uri.Query
If Not String.IsNullOrEmpty(query) Then
Dim pairs = query.Substring(1).Split("&"c)
For Each pair In pairs
Dim parts = pair.Split({"="c}, 2)
Dim name = System.Uri.UnescapeDataString(parts(0))
Dim value = If(parts.Length = 1, String.Empty,
System.Uri.UnescapeDataString(parts(1)))
result.Add(name, value)
Next
End If
Return result
End Function
Il est peut-être pas une mauvaise idée de virer <Extension()>
sur que trop d'ajouter la possibilité d'Uri.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.