如何拆分消息以便我可以将其分配给不同的变量?
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);
}
我在尝试拆分收到的消息时遇到问题。我拆分它是因为我需要将名称部分分配给名称变量,将信息部分分配给信息变量。我收到的消息是:
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);
}