C# 解析URL的优雅方式

C# 解析URL的优雅方式,c#,parsing,C#,Parsing,在POST/GET请求之后,我得到了需要解析的URL,当然我可以使用spit()来获取所需的信息,但这肯定是一种更优雅的方式。有什么想法吗 http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123 我正在使用类解析:访问令

在POST/GET请求之后,我得到了需要解析的URL,当然我可以使用spit()来获取所需的信息,但这肯定是一种更优雅的方式。有什么想法吗

http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123

我正在使用类解析:
访问令牌
过期
,您可以执行以下操作:

var url = new Uri("your url");

使用Uri+ParseQueryString函数:

Uri myUri = new Uri("http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123");

String access_token = HttpUtility.ParseQueryString(myUri.Query).Get("access_token");
String expires_in = HttpUtility.ParseQueryString(myUri.Query).Get("expires_in");
这也会起作用

String access_token = HttpUtility.ParseQueryString(myUri.Query).Get(0);
资料来源:

提示:你可能需要

using System.Web;

并添加对System.Web的引用

有几种方法可以做到这一点。一个是,您可以简单地使用该方法获取查询字符串,然后通过&s进行解析。另一个是,您可以使用该方法,然后使用将查询字符串解析为,这可能是您首选的路由

参见下面的示例:

using System.Web; // For HttpUtility

// The original URL:
Uri unparsedUrl = new Uri("http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123");
// Grabs the query string from the URL:
string query = unparsedUrl.Query; 
// Parses the query string as a NameValueCollection:
var queryParams = HttpUtility.ParseQueryString(query);
您现在可以执行类似于处理
字典
对象的操作。像这样:

string accessToken = queryParams["access_token"];
string expiresIn = queryParams["expires_in"];
这与@Jeroen Bouman展示的功能相同,但将不同的功能分开,这样您就可以了解每件作品各自的功能

参考文献:

using System.Web; // For HttpUtility

// The original URL:
Uri unparsedUrl = new Uri("http://api.vkontakte.ru/blank.html#access_token=8860213c0a392ba0971fb35bdfb0z605d459a9dcf9d2208ab60e714c3367681c6d091aa12a3fdd31a4872&expires_in=86400&user_id=34558123");
// Grabs the query string from the URL:
string query = unparsedUrl.Query; 
// Parses the query string as a NameValueCollection:
var queryParams = HttpUtility.ParseQueryString(query);


Uri类?hm.的可能副本。。我查看了URI类,但不知道如何使用它来解析PAR参数。任何示例?uri.Query.Split('&')都应该为您提供所有查询字符串参数,此时您可以按“=”进行拆分以将值与名称分开。您没有回答他的问题,他想要
访问令牌
,并且
uri中过期。Query
单独保存查询参数
Uri.PathAndQuery
通过
分隔路径和查询参数。显然,
Uri.Path
会保留路径,如果您希望这些变量是独立的。您还可以使用
Uri.TryCreate
更优雅地处理提供的字符串不是有效Uri的情况。