一个情况复杂的字符串分割的问题

VAL_ 646 AR_KickDetected 1 "Request" 0 "No Request" ;
请赐教,这个字符串应该如何进行分割?请给出代码或思路,代码最好用vb.net来写,多谢
如下图是期望结果,每个分割出来的字符串长度不是固定的。比如AR_KickDetected ,也可能是另一个长度不同的字符串。

img

实现了一个VB.NET版本的字符串分割示例:

效果如图:

img

示例代码:

Imports System.Text

Module Program
    Sub Main(args As String())
        Dim input As String = "VAL_ 646 AR_KickDetected 1 ""Request"" 0 ""No Request""; "
        Dim result As New List(Of String)
        Dim sb As StringBuilder = New StringBuilder()
        Dim quote As Integer = 0
        Dim c As Char
        For Each c In input
            If c = """" Then
                quote += 1
                Continue For
            End If
            If c = " " And quote Mod 2 = 0 Then
                result.Add(sb.ToString())
                sb.Clear()
                Continue For
            End If
            If c = ";" Then
                result.Add(sb.ToString())
                quote = 0
                sb.Clear()
                Exit For
            End If
            If Not Equals(c, """") Then
                sb.Append(c)
            End If
        Next
        Dim item As String
        For Each item In result
            Console.WriteLine(item)
        Next
        Console.ReadKey()
    End Sub
End Module

引号和分号都不要吗,用c语言写的,结果在代码后面,仅供参考

#include <stdio.h>
#include <string.h>

#define N 100   //分割字符串最大长度 
#define M 100    //分割字符串最大个数 

int main()
{
    int i = 0, j = 0, k = 0;
    char Input[1024] = {0};
    char Output[M][N] = {0}; 
    printf("Input Cut String:\n");
    gets(Input); 
    
    while(Input[i] != '\0')
    {
        if(i == 0)
        {
            j = 0;
        }
        
        if(Input[i] == ' ')
        {
            if(k == 0)
            {
                k = 0;
            }
            else
            {
                j++;
                k = 0;
            }
            i++;
            continue;
        }

        if((Input[i] != '"') && (Input[i] != ';'))
        {
            Output[j][k++] = Input[i];
        }
        i++;
    }    
    
    printf("Cut Resault:\n");
    for(i = 0; i < j; i++)
    {
        if(Output[i][0] != '\0') // 防止空格结尾导致输出空行 
        {
            printf("%s\n",Output[i]);
        }
    }
    
    return 0;
}

img

参考下面的代码

my_str = "VAL_ 646 AR_KickDetected 1 "Request" 0 "No Request" ;"
方法一
a = my_str.split(";")
print(a)
c = dict()
for var in a:
    if var !="":
        b = var.split("=")
        c[b[0]]=b[1]
print(c)
方法二
c={ var.split("=")[0]:var.split("=")[1] for var in my_str.split(";") if var!=""}
print(c)