我正在尝试解析我从我创建的arduino机器人获取的数据。我目前正在启动并运行我的串行程序,并且我能够监视计算机发送和接收的数据。
我试图从机器人获取的数据包括:速度,范围和航向。从arduino发送的数据是浮点数。
我使用单个字符来表示接收的数据是S,R还是H.例如: R150.6
这表示这是范围数据,而150.6将是用于更新程序的新范围。
我试图找出使用c#解析此问题的最佳方法,因为这是我的第一个c#程序。
我尝试使用类似的代码:
if (RxString[0] == 'R')
Range = double.Parse(RxString);
我在网站上阅读使用正则表达式,但是我很难弄清楚如何将它合并到我的代码中。
这是我用于指导的链接:
答案 0 :(得分:4)
你快到了。如果您始终以单个字母开头,请尝试Range = double.Parse(RxString.Substring(1))
。它将从第二个字符开始读取。
答案 1 :(得分:0)
我可以使用正则表达式来查找double:
\d+([,\.]\d+)?
使用:
Regex re = Regex.Match("R1.23", "\d+([,\.]\d+)?");
if (re.Success)
{
double @double = Convert.ToDouble(re.Value, System.Globalization.CultureInfo.InvariantCulture);
}
如果您的信件以字符串形式迁移或添加其他符号
,则可以从字符串中获取第一个小数答案 2 :(得分:0)
由于您知道返回数据的格式,您可以尝试这样的
data = RxString.SubString(0,1);
value = RxString.SubString(1, RxString.Length-1);
if(data == "R")
range = double.Parse(value);