2015-08-04 3 views
-3

Это мой последовательный порт, полученный данными в текстовом поле.Соответствие шаблону в C#

Current consumed by device : 0.45 
Power consumption: = [ 103.2277 ] 
ENERGY CONSUMED: = [ 24.250 ] 
Length = 6 

Current consumed by device : 0.45 
Power consumption: = [ 103.5094 ] 
ENERGY CONSUMED: = [ 24.250 ] 
Length = 4 

Я хочу, чтобы извлечь только значения «Потребляемая мощность» и «Энергия, израсходованная» и отобразить его в текстовом поле отдельно, каждый раз, когда это приходит через последовательный порт.

Как эффективно и эффективно разобрать это?

вот мой код

enter code here 

     Regex regex = new Regex(@"(Power consumption: (.*?) ])"); 
     Match match = regex.Match(temp); 
     if (match.Success) 
     { 
      string abc = match.Value; 
      string res = new string(abc.SkipWhile(c => c != '[') 
         .Skip(1) 
         .TakeWhile(c => c != ']') 
         .ToArray()).Trim(); 
      float f_num = float.Parse(res); 
      // trackBar1.Value = (int)f_num; 

      textBox2.Text = f_num.ToString(); 

пожалуйста предложить мне более быстрый код.

+4

Регулярное выражение будет вашим лучшим выбором. – nieve

+0

Я пробовал это .. heres мой код –

ответ

1

Вам может понадобиться настроить возврат каретки фиды/линия, но это должно работать:

string text = 
    "Current consumed by device : 0.45\r\nPower consumption: = [ 103.2277 ]\r\nENERGY CONSUMED: = [ 24.250 ]\r\nLength = 6\r\n\r\n" 
    + "Current consumed by device : 0.45\r\nPower consumption: = [ 103.5094 ]\r\nENERGY CONSUMED: = [ 24.250 ]\r\nLength = 4\r\n"; 

Regex regex = new Regex(@"Power consumption:\s=\s\[\s(?<PowerConsumption>\d*.\d*)\s\]\r\nENERGY CONSUMED:\s=\s\[\s(?<EnergyConsumed>\d*.\d*)\s\]"); 

MatchCollection matches = regex.Matches(text); 

foreach (Match match in matches) 
{ 
    Console.WriteLine("Power Consumption: " + match.Groups["PowerConsumption"].Value); 
    Console.WriteLine("Energy Consumed: " + match.Groups["EnergyConsumed"].Value); 
} 

Дает: Расход

Мощность: 103.2277

энергии, потребленной: 24,250

Потребляемая мощность: 103.5094

Потребляемая энергия: 24.250

Смежные вопросы