首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Letters C#中的数字数据

解析Letters C#中的数字数据
EN

Stack Overflow用户
提问于 2012-07-04 02:11:17
回答 3查看 310关注 0票数 2

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

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

我使用单个字符来表示正在接收的数据是S、R或H。例如: R150.6

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

由于这是我的第一个c#程序,我在尝试找出使用c#解析它的最佳方法时有点卡住了。

我尝试过使用类似的代码:

代码语言:javascript
复制
if (RxString[0] == 'R')
            Range = double.Parse(RxString);

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

这是我用于指导的链接:

String parsing, extracting numbers and letters

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-04 02:15:18

你就快到了。如果您总是以单个字母开头,请尝试Range = double.Parse(RxString.Substring(1))。它将从第二个字符开始读取。

票数 4
EN

Stack Overflow用户

发布于 2012-07-04 02:23:03

我可以使用正则表达式来查找double:

代码语言:javascript
复制
\d+([,\.]\d+)?

使用:

代码语言:javascript
复制
Regex re = Regex.Match("R1.23", "\d+([,\.]\d+)?");
if (re.Success)
{
     double @double = Convert.ToDouble(re.Value, System.Globalization.CultureInfo.InvariantCulture);
}

如果您的字母迁移到字符串中或添加其他符号,它将保证从字符串中获取第一个小数

票数 0
EN

Stack Overflow用户

发布于 2012-07-04 02:24:42

由于您知道返回数据的格式,因此可以尝试如下所示

代码语言:javascript
复制
data = RxString.SubString(0,1);
value = RxString.SubString(1, RxString.Length-1);

if(data == "R")
  range = double.Parse(value);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11316711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档