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



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

PUT/Person\r\n\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";等等,我要做的第一件事就是修复它,因为这太恶心了。然后使用这个q&a将其拆分为

如何将多行字符串转换为数组,其中每个元素都是所述字符串的一行?

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

最新更新