Как извлечь очень специфичные части из строки в C # и использовать их в приложении winform? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть данные, поступающие через последовательный порт.В настоящее время я получаю его и разбиваю на каждое "," (см. Код для справки).Прямо сейчас я использую (для каждой) функцию, которая делает подстроку @ каждой встреченной запятой.Но я не хочу этого.

Что мне нужно, скажем, для извлечения только ALPHA, BRAVO и CHARLIE из String1, и если данные отсутствуют, как показано в String2, мое извлечение должно также привести кпустая подстрока (и).

Проблема заключается в том, что эти данные получены с устройства GPS, и если уровень сигнала плохой, строка вводится пустыми, то есть только запятыми.Таким образом, длина строки может изменяться незначительно или сильно (String1 представляет полную строку, а String2 представляет строку с пропусками).

String1: $ GPBWC, 220516, ALPHA, 00046.34, BRAVO, T, CHARLIE, 0004.6, N,EGLM * 11

String2: $ GPBWC ,,, 0, BRAVO ,,,, N, EGLM * 11

Я понимаю, что некоторые важные вопросы уже задавались ранее, но я не могу найтирешение, которое достаточно надежно.Итак, любая помощь приветствуется.

Код:

private string serialRx = string.Empty;

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    serialRx += serialPort1.ReadExisting();                                              
    string[] lines = serialRx.Split(new char[] { '$' }, 
    StringSplitOptions.None);        

    for (int i = 0; i < lines.Length - 1; i++)                                          
    {
        if (lines[i].StartsWith("GPGSV"))                                                
        {
            string[] values = lines[i].Split(new char[] { ',' });                       

            foreach (var value in values)
            {
                Invoke(new Action(() => displaySplits(value)));
            }                   

            Invoke(new Action(() => displayReceivedText(lines[i])));           
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...