2009-08-04 6 views
1

Ich verwende die URL für eine HTTP-Ressource als eindeutige Kennungen für die Ressourcen (Überraschung).Wie finde ich passende URLs außer bestimmten Abfragezeichenfolgen?

Diese sind alle verschieden:

http://localhost/Docs/SomeDocument?group=33&checksafety=true 
http://localhost/Docs/SomeDocument?group=11&checksafety=true 
http://localhost/Docs/SomeDocument?group=11&checksafety=false 

Ich habe jedoch einen dritten Abfrageparameter, die keine Ressourcen unterscheiden sollen (auf der Serverseite, zieht es die gleichen Daten aus der Datenbank).

Dies sind die gleichen (die Gruppe und checksafety Parameter gleich sind):

http://localhost/Docs/SomeDocument?group=11&checksafety=false&rendergroup=A 
http://localhost/Docs/SomeDocument?group=11&checksafety=false&rendergroup=B 
http://localhost/Docs/SomeDocument?rendergroup=C&group=11&checksafety=false 

Ist ein regex hier angemessen?

Gibt es einen besseren Weg?

Ich bin mit C#, .NET 3.5 und ASP.NET.

+0

http: // localhost/Docs/SomeDocum ? Ent Gruppe = 33 & checksafety = true und http: // localhost/Docs/SomeDocument checksafety = true & group = 33 verschieden sind? –

+0

@samuelcarijo - nein, sie sind gleich. –

Antwort

0

Sie spalten könnte die Abfragezeichenfolgeflag zu bekommen, dann aufgeteilt, jede Gruppe zu bekommen, ob sie alle die gleiche Anzahl von Gruppen (von Gruppe I „Variable = Wert“ bedeuten). Analysiere jede Gruppe einzeln und beseitige diejenigen, die dich nicht interessieren.

Dann ist es einfacher zu analysieren. Hier sind einige Ideen

  • jede Gruppe in eine Liste und bestellen Sie es (und dann durchlaufen, um zu sehen, ob sie die gleichen
  • setzte jede Gruppe in ein Set sind und überprüfen, ob die Union ein Set individuell gleich ist.
  • tun, um diesen Prozess die Uri und UriBuilder, und nutzen sie für das Spiel Überprüfung nach dem Entfernen der "irrelevant" Gruppen

--edit enthalten Nick Berardi Vorschlag

+1

Ich stimme dir zu, es zu teilen. Aber ich würde es tun, indem ich es in eine System.Uri einfüge und dann mit UriBuilder den Uri erstelle. Sie können dann einfach die QueryString-Eigenschaft übernehmen, durch "&" teilen, die Variable entfernen, die Sie nicht mögen, und dann rekonstruieren. Der einzige Grund, warum ich ausdrücklich den UriBuilder erwähne, ist, dass Sie nicht versuchen müssen, die Zeichenfolge selbst zu rekonstruieren. –

+0

Ist das die gleiche Sache mit verschiedenen Worten ... meiner Meinung nach Überstunden hier funktioniert: 1) auf jeder URL die Abfragezeichenfolgeflag Umschreiben von spliting und die unerwünschten „Gruppen“ Entfernen und Hinzufügen der Gruppen wieder in alphabetischer Reihenfolge, zu vergleichen, dann Klein Versionen der URL-Strings? –

+0

Das würde auch funktionieren. Aber Sie müssen es nicht unbedingt sortieren (wenn Sie stattdessen Set verwenden) –

Verwandte Themen