我正在寻找一种干净的方法来解析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 =拒绝”和“验证失败”中将“statusDes = Validation Failed”中的“拒绝”解析为2个字符串变量。我已经找到了2个解决方案,但它们看起来有点笨重:
请告知。
答案 0 :(得分:3)
您可以使用Split
的重载,其中包含Char
。
var values = theCookie.Split(new [] {';', ',', '='},
StringSplitOptions.RemoveEmptyEntries);
然后,您可以一次遍历values
两个,查找获取值的键,或者您可以先转换为字典(使用LINQ ToDictionary
)。
答案 1 :(得分:0)
尝试使用Regular Expressions。
这应该这样做(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
希望有帮助!