我输入了
https://localhost:8181/PortalSite/View/CommissionStatement.aspx?status=commission&quarter=1;
Run Code Online (Sandbox Code Playgroud)
需要输出
status=commission
Run Code Online (Sandbox Code Playgroud)
怎么做C#(最好是正则表达式或别的东西)..
我的解决方案
var res = src.Split('?')[1].Split('=')[1].Split["&"][0];
Run Code Online (Sandbox Code Playgroud)
但在Split ["&"]中失败
请注意,在这种情况下,常见的谬误是将一些字符串处理函数放在一起,这些函数无法处理完整可能的输入规范.在您的情况下,有很多有效的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"
Run Code Online (Sandbox Code Playgroud)
一旦你有了"参数",你也可以迭代它们,搜索它们等等.YMMV.
如果您需要在问题中显示的输出,因此知道您始终需要查询字符串的第一个参数(并且无法按照我上面所示的名称查找它),那么您可以使用以下内容:
string key = parameters.GetKey(0);
Console.WriteLine(key + "=" + parameters[key]); // Prints "status=commission"
Run Code Online (Sandbox Code Playgroud)
如果您要保证的是带有查询字符串的URL,我建议使用HttpUtility.ParseQueryStringMethod.
var result = HttpUtility.ParseQueryString(new Uri(src).Query);
Run Code Online (Sandbox Code Playgroud)