Разобрать строку (распарсить) - C#
Формулировка задачи:
Всем привет, как можно правильно распарсить строку приерного вида?
msg = "temp1 = 25C, temp2=33, humidity = 85, light level = 57 \r";
Делаю вот так:
В итоге у меня выводится в лейбл не первая подстрока, а вторая temp2=33
[STAThread]
private void DisplayLabelData(MessageType type, string msg)
{
string [] separatedCommaMessage = msg.Split(new char[] { ',' });
lbInsideTemperature.Invoke(new EventHandler(delegate
{
if (comPort.IsOpen)
{
lbInsideTemperature.Text = string.Empty;
lbInsideTemperature.Font = new Font(lbInsideTemperature.Font, FontStyle.Bold);
lbInsideTemperature.ForeColor = MessageColor[(int)type];
foreach (string s in separatedCommaMessage)
lbInsideTemperature.Text = s;
}
// Если порт закрыт, очищаем поле;
else lbInsideTemperature.Text = string.Empty;
}));
Либо последняя....
Решение задачи: «Разобрать строку (распарсить)»
textual
Листинг программы
using System;
using System.Text.RegularExpressions;
namespace NETExperiments
{
class Program
{
static void Main(string[] args)
{
int humidity = 0;
string source =
"temp1 = 25C, temp2=33, humidity = 85, light level = 57 \r";
Regex reg = new Regex("humidity[\\s]?=[\\s]?([\\d]+)");
Match match = reg.Match(source);
if (match.Success)
{
humidity = Int32.Parse(match.Groups[1].Value);
}
Console.WriteLine(humidity);
Console.ReadKey();
}
}
}