来自串行端口

时间:2018-08-02 20:10:02

标签: regex

我有一种来自串行端口的数据格式,如下所示:

4.99,2.34,25300\n

应用程序将能够检测到终止符(\ n)。问题是我需要解析消息以提取每个数字。

2 个答案:

答案 0 :(得分:1)

我建议使用String.Split代替正则表达式:

string data = @"4.99,2.34,25300\n";

List<double> numbers = data.Replace(@"\n", String.Empty)
                           .Split(",", StringSplitOptions.RemoveEmptyEntries)
                           .Select(x => double.Parse(x, CultureInfo.InvariantCulture))
                           .ToList();

答案 1 :(得分:1)

使用正则表达式:

string regex = @"(\d+(\.\d+)?),?";
string data = @"4.99,2.34,25300\n";

IEnumerable<double> numbers = from match in Regex.Matches(data, regex)
                              let number = match.Groups[1].Value
                              select double.Parse(number, CultureInfo.InvariantCulture);

foreach (double number in numbers)
{
    Console.WriteLine(number);
}

我正在对capture substrings within a match使用括号。

从屏幕快照中可以看到,第一场比赛4.99,有3组:

  • 第一组(索引0)匹配所有内容:4.99,
  • 第二组(索引1)与数字4.99相匹配-这就是我们想要的
  • 第三组与,
  • 相匹配

Regular expression match groups