我有以下网址
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#中抓住这个?
答案 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中定义,因此您需要添加对此方法的引用。