如何获取字符串(url)的一部分?

时间:2017-03-23 18:58:49

标签: c#

我有以下网址

http://example.com/pa/TaskDetails.aspx?Proj=A5AF5C0D-648A-4892-A995-CDA8013F2643&Assn=2A992D9C-C511-E611-80E4-005056A13B51

我需要提取url参数的A5AF5C0D-648A-4892-A995-CDA8013F2643部分:

Proj=A5AF5C0D-648A-4892-A995-CDA8013F2643

这可以位于网址的中间或末尾。我无法保证它的位置。但我始终以Proj=开头,以&结尾。这之间的字符串是我想要的。我怎样才能在C#中抓住这个?

4 个答案:

答案 0 :(得分:2)

您似乎正在尝试从网址中检索IDFA。我认为您可以通过将正则表达式应用于url字符串来轻松实现。 例如,以下内容:

[0-9a-fA-F]{8}[-][0-9a-fA-F]{4}[-][0-9a-fA-F]{4}[-][0-9a-fA-F]{4}[-][[0-9a-fA-F]{12}

应用于URL字符串时,获取每个有效的IDFA。您可以为IDFA的头部和尾部添加条件,以准确检索您要查找的内容:

Proj=[0-9a-fA-F]{8}[-][0-9a-fA-F]{4}[-][0-9a-fA-F]{4}[-][0-9a-fA-F]{4}[-][[0-9a-fA-F]{12}&

您可以在许多免费的在线Regex小程序之一(例如https://regex101.com/)上测试上述Regex(正则表达式)语法

要将Regex应用于您的代码,请参阅以下主题: c# regex matches example

答案 1 :(得分:1)

一个解决方案:

string param = HttpUtility
.ParseQueryString("http://example.com/pa/TaskDetails.aspx?Proj=A5AF5C0D-648A-4892-A995-CDA8013F2643&Assn=2A992D9C-C511-E611-80E4-005056A13B51")
.Get("Proj");   

答案 2 :(得分:1)

string som = "http://example.com/pa/TaskDetails.aspx?Proj=A5AF5C0D-648A-4892-A995-CDA8013F2643&Assn=2A992D9C-C511-E611-80E4-005056A13B51";
int startPos = som.LastIndexOf("Proj=") + "Proj=".Length + 1;
int length = som.IndexOf("&") - startPos;
string sub = som.Substring(startPos, length); //<- This will return your key

这应该这样做。

答案 3 :(得分:1)

您可能需要创建Uri并将其Query属性的值传递给HttpUtility.ParseQueryString方法:

string value = HttpUtility.ParseQueryString(new Uri("http://example.com/pa/TaskDetails.aspx?Proj=A5AF5C0D-648A-4892-A995-CDA8013F2643&Assn=2A992D9C-C511-E611-80E4-005056A13B51").Query)["Proj"];

该方法在System.Web.dll中定义,因此您需要添加对此方法的引用。