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);

次に、一度に 2 つをループして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 に答える