Pregunta

quiero leer una cadena que se ve exactamente como esto:

VPSProtocol=2.22
Status=OK
StatusDetail=0000 : The Authorisation was Successful.
VPSTxId={BBF09A43-913E-14E3-B41B-E5464B6FF8A9}
SecurityKey=EH8VFZUSH9
TxAuthNo=4979698
AVSCV2=SECURITY CODE MATCH ONLY
AddressResult=NOTMATCHED
PostCodeResult=NOTMATCHED
CV2Result=MATCHED
CAVV=AAABARR5kwAAAAAAAAAAAAAAAAA=
3DSecureStatus=OK

... en un diccionario de preferencia. He tratado de división en el vbcrlf (hay uno en cada línea le puedo asegurar) y en el '=', pero no puede conseguir bastante que se comporte correctamente menudo salir de los límites errores. Alguien tiene algunas ideas fantásticas sobre cómo resolver esto?

Ayuda, como siempre, apreciado.

¿Fue útil?

Solución

Se puede usar un StringReader :

Dim dic = New Dictionary(Of String, String)
Using reader = New StringReader(someString)
    Dim line As String = reader.ReadLine()
    While line <> Nothing
        Dim tokens = line.Split("=")
        If tokens.Length < 2 Then
            Continue While
        End If
        dic.Add(tokens(0), tokens(1))
        line = reader.ReadLine()
    End While
End Using

Otros consejos

Me resuelto esto con esta pieza de código bastante desagradable;

    Dim dictionary As New Dictionary(Of String, String)
    Dim x As String = "x?" & Replace(tmp.ToString(), vbCrLf, "&")
    Dim arr As String() = x.Split("?".ToCharArray())
    If arr.Length >= 2 Then
        Dim arr2 As String() = arr(1).Split("&".ToCharArray())
        For Each item As String In arr2
            Dim arr3 As String() = item.Split("=".ToCharArray())
            dictionary.Add(arr3(0), arr3(1))
        Next
    End If

Espero que ayude a alguien por allí y si alguien puede sugerir mejoras, por favor hacer:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top