gpt4 book ai didi

c# - 如何使用 C# 解析值中包含 "&"的查询字符串?

转载 作者:太空狗 更新时间:2023-10-29 23:41:16 27 4
gpt4 key购买 nike

我在 Sharepoint 2007 页面上有一个 C# 自定义 Web 部件。当单击另一个页面上的 SSRS 报告中的链接时,它会将用户发送到我的自定义 Web 部件页面,其中包含如下查询字符串:

?tax4Elem=Docks%20&%20Chargers&ss=EU%20MOVEX&Phase=1&tax3Elem=Play%20IT&tax5Elem=Charger

记下“tax4Elem”的值,它基本上是“Docks & Chargers”。 (& 符号实际上可以出现在“tax4Elem”、“tax3Elem”和“tax5Elem”中)。

我无法对该值中的符号进行编码,因此我将不得不使用它。

如何解析此查询字符串,使其不会将“Docks & Chargers”中的“&”识别为键/值对的开头?

提前致谢!凯特

最佳答案

如果您确实无法更正 URL,您仍然可以尝试解析它,但您必须做出一些决定。例如:

  • 键只能包含字母数字字符。
  • 没有空值,或者至少,键后总是有一个等号=
  • 值可能包含其他符号和问号。
  • 值可以包含额外的等号,只要它们看起来不是新键/值对的一部分(它们前面没有 &\w+)

捕获这些对的一种可能方法是:

MatchCollection matches = Regex.Matches(s, @"\G[?&](?<Key>\w+)=(?<Value>.*?(?=$|&\w+=))");
var values = matches.Cast<Match>()
.ToDictionary(m => m.Groups["Key"].Value,
m => HttpUtility.UrlDecode(m.Groups["Value"].Value),
StringComparer.OrdinalIgnoreCase);

然后您可以获得值:

string tax4 = values["tax4Elem"];

请注意,如果根据我们的规则查询字符串“无效”,则该模式可能无法捕获所有值。

关于c# - 如何使用 C# 解析值中包含 "&"的查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com