可能重复:
How to parse a query string into a NameValueCollection in .NET
我输入为
https://localhost:8181/PortalSite/View/CommissionStatement.aspx?status=commission&quarter=1;
需要输出
status=commission
如何使用C#(最好是正则表达式或其他东西)..
我的解决方案
var res = src.Split('?')[1].Split('=')[1].Split["&"][0];
但拆分[“&”]
失败答案 0 :(得分:6)
请注意,在这种情况下,常见的谬误是将一些字符串处理函数放在一起,这些函数无法处理完整可能的输入规范。在您的情况下,有很多有效的URL实际上很难正确处理/解析。所以你应该坚持已经实施的,经过验证的课程。
因此,我会使用System.Uri
类来使用URL字符串。您实际尝试访问的URL的部分是所谓的“查询”,它也是Uri
实例的属性。使用System.Web.HttpUtility.ParseQueryStringMethod()
可以轻松,正确地访问查询本身作为其各自的键值部分(您需要将System.Web.dll
添加到项目的引用中,并确保您不使用.NET 4客户端您的应用程序的配置文件,因为它不包括此程序集。)
示例强>:
Uri u = new Uri("https://localhost:8181/PortalSite/View/CommissionStatement.aspx?status=commission&quarter=1;");
Console.WriteLine(u.Query); // Prints "status=commission&quarter=1;"
var parameters = HttpUtility.ParseQueryString(u.Query);
Console.WriteLine(parameters["status"]); // Prints "commission"
一旦你拥有了“参数”,你也可以迭代它们,搜索它们等等.YMMV。
如果您需要在问题中显示的输出,那么知道您始终需要查询字符串的第一个参数(并且无法按照我上面显示的名称查找它) ,那么你可以使用以下内容:
string key = parameters.GetKey(0);
Console.WriteLine(key + "=" + parameters[key]); // Prints "status=commission"
答案 1 :(得分:6)
如果您要保证的是带有查询字符串的网址,我建议使用HttpUtility.ParseQueryStringMethod。
var result = HttpUtility.ParseQueryString(new Uri(src).Query);
答案 2 :(得分:2)
您可以使用以下正则表达式:status=(\w*)
但我认为有更好的选择,例如使用HttpUtility.ParseQueryStringMethod
。