我在嘗試拆分收到的訊息時遇到問題。我正在拆分它,因為我需要將名稱部分分配給名稱變數,將資訊部分分配給資訊變數。我收到的訊息是:
PUT /Person\r\n\r\nis 在這個建筑物中\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"。
uj5u.com熱心網友回復:
如果字串確實包含實際字符“\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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/441071.html
上一篇:從另一個陣列和組鍵中查找值
下一篇:遍歷陣列并洗掉最小的數字
