如何拆分消息以便我可以将其分配给不同的变量?

How to split a message so I can assign it to different variables?

我在尝试拆分收到的消息时遇到问题。我拆分它是因为我需要将名称部分分配给名称变量,将信息部分分配给信息变量。我收到的消息是:

PUT /Person\r\n\r\nis in this building\r\n

“人”是名字,“在这栋楼里”是位置。这也是一个 0.9 协议。

对于我设法做到的另一条消息,这是我所做的代码:

string tmp1 = null;
temp = line.Remove(0, 6); //removes first part to bring name to beginning
line = temp.Replace(" HTTP/1.0\r\nContent-Length", ""); //removes quote from message
string[] tmp = temp.Split(':'); //Splits name and location apart
name = tmp[0];
tmp1 = tmp[1];                  //Name and location set
location = tmp1.Remove(0, 11);  //further trimming to location
tmp1 = location;          
amount = tmp1.Count();
location = tmp1.Remove(amount - 4);  //Location set

上面是我所做的事情的一个例子,它收到一条类似于我提供的引述的消息,并且基本上将它在某处分开并摆脱诸如“\r\n”之类的东西或协议信息我不想。但是,如果消息中包含包含“:”的信息,它也会面临风险,因为它总是会拆分。所以我错了。

我不确定我可以做些什么来提取我想要的信息,因为消息中的传入数据可以是任意长度的。所以难度相当大。我还想过用“”将它分成参数,但它不允许我这样做,因为它是“\r\n”等东西的一部分

我能做什么? 希望我提供的有用。

我最接近正确拆分它的事情是做

liness = line.Split('\');

但它会将它分成 2 个或 3 个以上的参数,因为我也没有从“\r\n”中删除“r”和“n”。

如果字符串确实包含实际字符“\r\n”等,我要做的第一件事就是修复它,因为这很讨厌。那就用这个问答拆分一下吧

    var str = "PUT /Person\r\n\r\nis in this building\r\n";
    var clean = str.Replace("\r\n", System.Environment.NewLine);
    string[] splitted = clean.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string line in splitted) {
        Console.WriteLine(line);
    }