我这里有一个TELNET SERVER,这个USSR Vessel v1.0程序是客户端,它将连接到telnet服务器,telnet服务器SPAMS,我的意思是将数据非常快地发送给客户端。
(好吧,最初的telnet服务器是一个读取5个传感器的微控制器,数据将被发送回客户端,所以这应该比我用作替代的C#程序telnet服务器慢得多)
问题在于,我使用正则表达式来拆分来自服务器的字符串。
字符串应该是这样的:Q0.00W0.10X0.30Y0.44Z99.00,你看,我正在擦除Q / W / X / Y / Z然后将值存储在字符串数组中然后将它们打印成5个标签,但我收到此错误,请参阅下面的屏幕截图。我添加了一个大文本框用于调试目的。通过telnet接收字符串时查看我的代码:
public void OnAddMessage(string sMessage)
{
//Q0.00W0.10X0.30Y0.44Z99.00
string[] lines = Regex.Split(sMessage, "\r\n");
foreach (string line in lines)
{
Console.WriteLine(line);
valuesStr[ctr2] = line;
ctr2++;
}
ctr2 = 0;
m_lbRecievedData.Items.Add(sMessage);
tempVal.Text = valuesStr[4]+ "°C";
frontVal.Text = valuesStr[0];
backVal.Text = valuesStr[1];
leftVal.Text = valuesStr[2];
rightVal.Text = valuesStr[3];
}
答案 0 :(得分:1)
您的问题需要更多地澄清您想要的内容。就目前而言,代码无法完成您声称要做的事情,即“擦除Q / W / X / Y / Z然后将值存储在字符串数组中”。
尽管如此,这是试图解决问题中的问题:
using System.Text.RegularExpressions;
private Regex regex = new Regex("[QWXYZ]");
private void OnAddMessage(string message)
{
using (StringReader sr = new StringReader(message))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] splitContents = regex.Split(line);
//do something with the parsed contents ...
}
}
}
答案 1 :(得分:0)
尝试使用Micro Framework中的RegEx实现
这是一个网络演员解释它!
http://channel9.msdn.com/coding4fun/blog/Net-Micro-Framework-v42-RTWs
它可以说更好,因为它允许你匹配一段明确的时间,然后从你离开的地方恢复......默认情况下使用Full Fx是不容易的。
http://www.codeproject.com/Articles/386890/String-Manipulation-in-the-NET-Micro-Framework