簡體   English   中英

如何從C#中的URL查詢字符串中提取值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM