我有一种来自串行端口的数据格式,如下所示:
4.99,2.34,25300\n
应用程序将能够检测到终止符(\ n)。问题是我需要解析消息以提取每个数字。
答案 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组:
4.99,
4.99
相匹配-这就是我们想要的,