2011-09-03 82 views
0

我想從URL中檢索值。我的URL看起來像:通過RegEx從URL獲得價值

http://www.test.com/questions/gradename/

http://www.test.com/questions/gradename/subjectname

http://www.test.com/questions/gradename/subjectname/topicname

http://www.test.com/questions/gradename/subjectname/topicname/subtopicname

現在我想找出gradename(這是動態值)的URL。

+0

@Tim:是的,gradename總是在同一位置上,域名並不總是相同的。 – Askiitians

+0

Decker97的答案應該爲你做的伎倆。 – Tim

+0

你使用Asp.Net MVC嗎?如果是的話,你可以安全地獲得你的控制器內的參數('路由')。這個問題的每個答案看起來都不太好。你不應該把你的URL當作一個簡單的字符串 – JohnJohnGa

回答

3

如果你正在尋找一個服務器端/ ASP.NET解決方案,您可以使用Segments集的URL,例如:

var gradeName = Request.Url.Segments[2].Trim('/'); 

細分爲以下URL的部分組成的數組主機名,例如:

[ "/", "questions/", "gradename/", ... ] 
+0

主機名和/被剝離出來,所以你的第一個例子是正確的。不過,我不太確定你的第二個。 – Tim

+0

謝謝@Tim,那是一個錯字。 – M4N

+0

@Tim:Request.Url.Segments [3] .Trim('/')第三個位置將返回gradname而不是第二個。 – Askiitians

2

正則表達式是預優化的。只需將字符串拆分爲/並取第四個值。

+0

+1 - 當我明顯地盯着我時,我討厭它,我忽略它。我在想字符串函數,但想出各種奇怪的方法來做到這一點。 :) – Tim

+0

順便說一句 - 最好說數組的第4個元素,因爲在/上分割URL會導致至少5個值,其中元素4是gradename。 – Tim