C# 从字符串c中提取数字

C# 从字符串c中提取数字,c#,regex,serial-port,substring,extract,C#,Regex,Serial Port,Substring,Extract,我有字符串: 湿度:33% 温度:25.7摄氏度 可见光:112勒克斯 红外辐射:1802.5 mW/m2 紫外线指数:0.12 二氧化碳:404ppm二氧化碳 压力:102126帕 我必须提取‘湿度:’后面的所有数字。。 我想用Regex类,但我不知道怎么做 获取串行数据的我的代码: namespace Demo1Arduino { 谢谢尝试正则表达式,唯一的诀窍是CO2和m2-我们不需要2,这就是为什么我添加了\b: 结果 33; 25.7; 112; 1802.5; 0.12; 4

我有字符串:

湿度:33% 温度:25.7摄氏度 可见光:112勒克斯 红外辐射:1802.5 mW/m2 紫外线指数:0.12 二氧化碳:404ppm二氧化碳 压力:102126帕 我必须提取‘湿度:’后面的所有数字。。 我想用Regex类,但我不知道怎么做

获取串行数据的我的代码:

namespace Demo1Arduino
{

谢谢

尝试正则表达式,唯一的诀窍是CO2和m2-我们不需要2,这就是为什么我添加了\b:

结果

   33; 25.7; 112; 1802.5; 0.12; 404; 102126

在不知道类型的情况下获取多个数字是没有意义的。我将值放入字典中,以便在代码后面使用该数字。请参阅下面的代码和:


你为什么要使用正则表达式呢?String.Split':';…而且你提供的代码都与你要做的事情无关…你的问题基本上是-我如何从字符串中获取数字?你的代码的其余部分是不相关的。我没有看到足够的研究来解决这个问题。所以这不是我想要的。我该怎么做?服务。你需要我需要提供您可能遇到的问题的详细信息,以及您试图解决的问题。我建议您将其作为一个起点…您的问题是什么?我所看到的是这项任务,这是我的代码。接下来,我们会问一些具体的问题,即我们提供一些代码和所需的输出,以及我们得到的结果,而不是这些。有什么问题吗您选择[0-9]的原因+over\d+?@ThePerplexedOne:\C中的d包括所有数字,例如波斯数字:if Regex.IsMatch۰1777;۳۴۶۷۸۹۹@ThePerplexedOne:Simple test:if Regex.IsMatch۰۱۲۲۳۳,@\d+Console.Writematched!;如果您愿意,您必须添加选项:.Matchessource,@\b\d+:。\d+.\d+。\d+。\d+。\d+。\d+。\d+。\d+。\emascript\emptions,请注意:请参阅从理论上讲,在不知道类型的情况下获取多个数字是否有意义取决于格式:如果我们保证第一个值是湿度,第二个值是温度等,我们可以不使用名称。但是,在一般情况下,需要名称。+1。进一步的泛化增加了域-摄氏度、%,帕等。我不会雇佣任何愿意的人那个
  string source =
    @"Humidity: 33 %
      Temperature: 25.7 deg C
      Visible light: 112 lx
      Infrared radiation: 1802.5 mW/m2
      UV index: 0.12
      CO2: 404 ppm CO2
      Pressure: 102126 Pa";

  string[] numbers = Regex
      .Matches(source, @"\b[0-9]+(?:\.[0-9]+)?\b")
      .OfType<Match>()
      .Select(match => match.Value)
      .ToArray();
   Console.Write(string.Join("; ", numbers));
   33; 25.7; 112; 1802.5; 0.12; 404; 102126
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication55
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] inputs = {
                "Humidity: 33 %",
                "Temperature: 25.7 deg C",
                "Visible light: 112 lx",
                "Infrared radiation: 1802.5 mW/m2",
                "UV index: 0.12",
                "CO2: 404 ppm CO2",
                "Pressure: 102126 Pa"
                             };

            string pattern = @"^(?'name'[^:]+):\s(?'value'[\d.]+)";

            Dictionary<string, decimal> dict = new Dictionary<string,decimal>();
            foreach(string input in inputs)
            {
                Match match = Regex.Match(input,pattern);
                string name = match.Groups["name"].Value;
                decimal value = decimal.Parse(match.Groups["value"].Value);

                Console.WriteLine("name = '{0}', value = '{1}'", name, value);
                dict.Add(name, value);
            }
            Console.ReadLine();
        }
    }

}