2017-08-15 204 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 –