Как разобрать абзац в массив построчно?

Если у меня есть такой абзац:

MODULE Local (Parent := "Local",
             ParentModPortId := 1,
              CatalogNumber := "1756-L71S",
              Vendor := 1,
              ProductType := 14,
              ProductCode := 158,
              Major := 27,
              Minor := 11,
              PortLabel := "RxBACKPLANE",
              ChassisSize := 13,
              Slot := 11,
              Mode := 2#0000_0000_0000_0001,
              CompatibleModule := 0,
              KeyMask := 2#0000_0000_0001_1111,
              SafetyNetwork := 16#0000_3acc_033e_6fa0)
END_MODULE

и в настоящее время он сохраняется как простая строка в моей программе. Теперь я хотел бы сохранить каждую строку как запись в массиве, как мне это сделать?

2 ответа

Решение

Использование String.Split функция

string[] paragraph =yourString.Split(",");

Попробуйте использовать двойные двойные кавычки в качестве escape-символа

String Para = @"MODULE Local (Parent := ""Local"",
         ParentModPortId:= 1,
          CatalogNumber:= ""1756-L71S"",
          Vendor:= 1,
          ProductType:= 14,
          ProductCode:= 158,
          Major:= 27,
          Minor:= 11,
          PortLabel:= ""RxBACKPLANE"",
          ChassisSize:= 13,
          Slot:= 11,
          Mode:= 2#0000_0000_0000_0001,
          CompatibleModule:= 0,
          KeyMask:= 2#0000_0000_0001_1111,
          SafetyNetwork:= 16#0000_3acc_033e_6fa0)
        END_MODULE";

Я заметил, что формат довольно похож на JSON, хотя и с другими разделителями.

Следовательно, один из способов решить эту проблему - преобразовать его в JSON:

  • заменить все ":=" на "="
  • заменить (и) на {и}
  • заменить;
  • удалить метки модуля

Затем вы можете проанализировать его с помощью библиотеки JSON, например, NewtonSoft, которая находится на NuGet.

Если вы заранее знаете, какие пары строк ожидать, вы можете привести их в определенный класс. В противном случае, преобразуйте его в динамический (или в словарь, если ваша версия.NET слишком старая для динамического) и продолжайте оттуда.

Другие вопросы по тегам