从字母C#解析数字数据

时间:2012-07-03 18:11:17

标签: c# parsing arduino

我正在尝试解析我从我创建的arduino机器人获取的数据。我目前正在启动并运行我的串行程序,并且我能够监视计算机发送和接收的数据。

我试图从机器人获取的数据包括:速度,范围和航向。从arduino发送的数据是浮点数。

我使用单个字符来表示接收的数据是S,R还是H.例如: R150.6

这表示这是范围数据,而150.6将是用于更新程序的新范围。

我试图找出使用c#解析此问题的最佳方法,因为这是我的第一个c#程序。

我尝试使用类似的代码:

if (RxString[0] == 'R')
            Range = double.Parse(RxString);

我在网站上阅读使用正则表达式,但是我很难弄清楚如何将它合并到我的代码中。

这是我用于指导的链接:

String parsing, extracting numbers and letters

3 个答案:

答案 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);