[英]How to extract a value from a URL query string in C#?
可能重复:
从Uri获取单个查询参数
我有一个像这样的URL:
http://somedomain.com/website/webpage.aspx?token=123456&language=English
我的目标是从中提取123456。 query-string参数中只能有一个支付ID。 我可以使用什么样的正则表达式? 顺便说一句,我正在使用C#(.NET)。
谢谢
使用System.URI类
URI类的Query属性以字符串形式返回整个查询
Uri bUri = new Uri("http://somedomain.com/website/webpage.aspx
?token=123456&language=English");
var query = bUri.Query.Replace("?", "");
现在查询将具有字符串值"token=123456&language=English"
然后使用LINQ从查询属性生成一个Dictionary
var queryValues = query.Split('&').Select(q => q.Split('='))
.ToDictionary(k => k[0], v => v[1]);
然后,您可以访问值
queryValues["token"]
哪个会给你123456
token=(\\d+)
应该可以解决问题
为了迎合aplhas你也可以做到:
token=([a-zA-Z0-9+/=]+)
明确匹配您期望的字符。 这匹配“token =”,然后捕获与字符类匹配的所有后续字符,即az,AZ,0-9,+,/和=。
要么
token=([^&#]+)
匹配任何字符,除了你知道的字符可以完成令牌。 这匹配“token =”,然后捕获所有字符,直到字符串的第一个&
, #
或结尾。
不要使用正则表达式。 C#内置了这个方法!
var queryString = string.Join(string.Empty, url.Split('?').Skip(1));
System.Web.HttpUtility.ParseQueryString(queryString)
采用
(?:token=)(?<TokenValue>[^&]+)
并在C#中得到的值只有 :
myMatch.Groups["TokenValue"].Value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.