4

我正在寻找一种干净的方法来从 httpwebrequest 对象中的 set-cookie 标头中解析出 2 个变量。

Set-Cookie 头中的字符串如下:

X-Mapping-dmogknml=6652DD088AB10EE6A65DD9C700872364;
path=/,ASP.NET_SessionId=f4jg1h55eoqbdk452blsozfl; path=/;
HttpOnly,id=111,status=rejected; expires=Thu, 21-Mar-2013 07:31:55 GMT; path=/,statusDes=
Validation Failed ; expires=Thu, 21-Mar-2013 07:31:55 GMT; path=/,X-Mapping
dmogknml=dmogknml=6652DD088AB10EE6A65DD9C700872; path=/

我基本上想将“status=rejected”中的“rejected”和“statusDes=Validation Failed”中的“validation failed”解析为2个字符串变量。我已经在脑海中制定了 2 个解决方案,但它们看起来有点笨拙:

  1. 在“;”上循环和拆分,然后在“,”上拆分,然后在“=”上拆分。
  2. 使用子字符串。

请指教。

4

2 回答 2

3

您可以使用Split需要集合的重载Char

 var values = theCookie.Split(new [] {';', ',', '='}, 
                              StringSplitOptions.RemoveEmptyEntries);

然后,您可以一次遍历这values两个,寻找键来获取值,或者您可以先转换为字典(使用 LINQ ToDictionary)。

于 2013-03-22T19:46:29.193 回答
0

尝试使用正则表达式

这应该这样做(VB代码):

Dim Pattern As String = "status=(?<Status>.*?);.*?statusDes=(?<StatusDes>.*?);"
Dim m As Match = Regex.Match(input:=MyData, pattern:=Pattern , options:=RegexOptions.IgnoreCase + RegexOptions.Singleline)
Dim Status as String
Dim StatusDes as String

    Status = m.Groups("Status").ToString
    StatusDes = m.Groups("StatusDes").ToString

记得导入Imports System.Text.RegularExpressions

希望对您有所帮助!

于 2013-03-22T19:47:31.030 回答