2017-08-15 207 views
-5

我需要你的集體智慧。我需要獲取url的一部分,以便我可以將它作爲參數傳遞,以使某些事情發生。下面是我得到了什麼:檢索url的一部分

這裏是url「somesite/SomePage的/ johndoe21911」的一個例子,我需要獲得「21911」,這樣我可以將它傳遞到這一點:

var url = Request.ApplicationPath.Replace("/", ""); 
Session["agencyId"] = _Apps.GetGehaAgencyData(portion needed goes here); 

任何方向是極大的讚賞

+1

我認爲這是Asp.Net? MVC? Web API?請適當地標記您的問題。 – Amy

+0

你嘗試過什麼嗎?關於從更大的字符串中獲取數字有很多問題 –

+0

_I需要獲得「21911」_是什麼意思?換句話說,無論你想要提取什麼標準?它是否是來自URL最後部分的任何數字,還是最後五個字符,還是最後五個數字值?你得到了漂移。 – Sach

回答

1

如果你的URL看起來像一個實際的URL(使用http://部分),那麼你可以使用Uri類:

private static void Extract() 
{ 
    Uri uri = new Uri("http://somesite/somepage/johndoe21911"); 
    string last = uri.Segments.LastOrDefault(); 
    string numOnly = Regex.Replace(last, "[^0-9 _]", string.Empty); 
    Console.WriteLine(last); 
    Console.WriteLine(numOnly); 
} 

如果是完全一樣的前充足的(沒有http://部分),那麼你可以做這樣的事情:

private static void Extract() 
{ 
    string uri = "http://somesite/somepage/johndoe21911"; 
    string last = uri.Substring(uri.LastIndexOf('/') + 1); 
    string numOnly = Regex.Replace(last, "[^0-9 _]", string.Empty); 
    Console.WriteLine(last); 
    Console.WriteLine(numOnly); 
} 

以上假設您要從URL,最後段所有數字這就是你說你的要求是。也就是說,如果您的網址是看起來像這樣:

somesite/somepage/john123doe456"

這將提取123456

如果你只想要最後5個字符,你可以簡單地使用string.Substring()來提取最後5個字符。

如果你想要數字這是在字符串的末尾,那麼這將工作。

private static void Extract() 
{ 
    string uri = "somesite/somepage/john123doe21911"; 
    string last = uri.Substring(uri.LastIndexOf('/') + 1); 
    string numOnly = Regex.Match(last, @"\d+$").Value; 
    Console.WriteLine(last); 
    Console.WriteLine(numOnly); 
} 

哦,說我已經遇到對谷歌的一些東西,但沒有就如何實現它們是一個很懶惰的回答十分肯定。如果你是谷歌,你可以找到無數的例子來說明如何做這些事情,即使在這個網站上。請從下次開始先做你的研究,先自己試試

+0

感謝您的時間,我將在未來做更多的盡職調查 –

+0

如果解決了您的問題,請將以上答案標記爲已接受。還有祝你好運! – Sach

+0

再次感謝,我去了,讓我的生活更輕鬆。這些網址會稍微改變一下讓我使用查詢字符串,我可以使用Request.QueryString –