Как разобрать абзац в массив построчно?
Если у меня есть такой абзац:
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 слишком старая для динамического) и продолжайте оттуда.