bmw318mt Ответов: 1

Считывание определенных значений из строки


У меня есть строка, как показано ниже.
set Bond_Type_Bond1 = 0 no_units VAR_E B1_B1_IMP_B1_PRM FULL_ND 0 1 0 0 1
set ProWedge_Type_Bond1 = 0 no_units VAR_E B1_B1_IMP_B1_PRM FULL_ND 0 1 0 0 1
set Bond1_Current_Offset = 0 mAmps USG_CURRENT B1_CU_PROC_RESP_NOWEDGE_B1_PRM FULL -50 50 0 -50 50

set Bond1_Force_Offset = 0.0 grams VAR_E B1_CU_PROC_RESP_NOWEDGE_B1_PRM FULL -50.0 50.0 0.0 -50.0 50.0
set Force_1 = 35.0 grams BFORCE BOND1_FORCE_PRM FULL 0.0 700.0 35.0 0.0 700.0
set Minimum_Force_1 = 5.0 grams BFORCE B1_CUREG_FORCE_LIFT_B1_PRM FULL_HIDDEN 0.0 20.0 5.0 0.0 20.0

Мне нужно прочитать имя и значения и поместить их в список, я могу прочитать имя, но когда дело доходит до значений, я не могу сказать, откуда они начинаются. Обратите внимание, что мне нужны цифры в конце, есть 5 значений, но их может быть больше или меньше

Что я уже пробовал:

int paramNameFrom = s.IndexOf("set", StringComparison.OrdinalIgnoreCase) + "set".Length;
                        int paramNameTo = s.IndexOf("=") + "=".Length;
                        string paramName = s.Substring(paramNameFrom, paramNameTo - paramNameFrom);
                        paramName = paramName.Trim();

                        int paramValsFrom = s.IndexOf("PRM", StringComparison.OrdinalIgnoreCase) + s.IndexOf(" ");

                        string paramVals = s.Substring(paramValsFrom);

                        string[] refList = { };
                        refList = paramVals.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                        List<string> paramsValuesList = new List<string>();
                        foreach (string v in refList)
                        {
                            paramsValuesList.Add(v);
                        }

                        paramDict.Add(paramName, paramsValuesList);

1 Ответов

Рейтинг:
9

OriginalGriff

Начните с просмотра вашей строки: Если вы показываете шесть строк текста, то первое, что нужно сделать, это разбить его на отдельные строки.
Если Вы читаете данные из файла, то лучший способ сделать это-использовать файл.ReadAllLines, который возвращает массив строк, по одной на строку.
В противном случае используйте строку.Раскол, чтобы разбить его на новой строке.

Затем вы можете обработать каждую строку таким же образом.
Начните с разбиения его на "левый" и "правый" разделы: строка.Разделение с помощью '=' сделает это за вас.
Левая половина будет "set ", за которым следует имя, так что это просто: базовая операция подстроки.
Правая половина также не слишком сложна: снова используйте строку.Разделить с пробелом в качестве разделителя и отбросить пустые записи.
Массив, который вы в конечном итоге получите, будет иметь длину, которая говорит вам количество записей, и если вы проигнорируете первые пять, то остальные-это числа, которые вы хотите, независимо от того, сколько их есть.