检索网址的一部分

时间:2017-08-15 17:49:25

标签: c# asp.net url

我需要你的集体智慧。我需要获取一部分网址,以便我可以将其作为参数传递以使某些事情发生。这就是我所拥有的:

这里是url“somesite / somepage / johndoe21911”的一个示例,我需要获取“21911”以便我可以将其传递给此:

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

非常感谢任何方向

1 个答案:

答案 0 :(得分:1)

如果您的网址看起来像一个实际网址(使用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);
}

哦,并且说 我在谷歌上遇到过一些东西,但对于如何实施它们并不是很确定 是一个非常懒惰的答案。如果你是谷歌,你可以找到无数的如何做所有这些事情的例子,即使在这个网站本身。请从下次开始,先进行研究,然后先尝试