2009-08-04 53 views
1

我正在使用HTTP資源的URL作爲資源的唯一標識符(意外)。如何查找除特定查詢字符串以外的匹配網址?

這些都是不同的:

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

不過,我不應該區分資源的第三查詢參數(在服務器端,它就會從數據庫中相同的數據)。

這些是相同的(組和checksafety參數都相同):

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 

是一個正則表達式合適嗎?

有沒有更好的方法?

我使用的是C#,.NET 3.5和ASP.NET。

+0

的http://本地主機/文件/ SomeDocum ent?group = 33&checksafety = true和 http:// localhost/Docs/SomeDocument?checksafety = true&group = 33是不同的? – 2009-08-04 15:08:07

+0

@samuelcarrijo - 不,他們是一樣的。 – 2009-08-04 16:27:54

回答

0

你可以拆分得到查詢字符串,然後拆分得到每個組,看看他們是否都有相同的組數(組的意思是「變量=值」)。分別分析每個組並消除那些不關心的組。

然後,它更容易分析。這裏有一些想法

  • 把各組進入名單,並責成它(然後遍歷,看看他們是相同的
  • 把每一組爲一組,並檢查聯盟等於一個單獨設置。
  • 做使用URI和UriBuilder這個過程中,並刪除「不相關」組

--edit後使用他們的比賽驗證包括尼克·貝拉爾迪建議

+1

我同意你將它分開。但是我會將它放入System.Uri,然後使用UriBuilder創建Uri。然後,您可以輕鬆取得QueryString屬性,按「&」拆分,移除您不喜歡的變量,然後重新構建。我特別提到UriBuilder的唯一原因是您不必嘗試通過自己重建字符串。 – 2009-08-04 15:01:49

+0

這是使用不同的單詞的同一件事...我的大腦在這裏超時工作: 1)通過拆分和刪除不需要的「組」並按字母順序重新添加組,重寫每個URL的查詢字符串,然後比較小寫URL字符串的版本? – 2009-08-04 17:50:23

+0

這也可以。但是你不一定需要對它進行排序(如果你使用Set來代替) – 2009-08-04 18:19:09