How to parse a paragraph into an array line by line?
本问题已经有最佳答案,请猛点这里访问。
如果我有这样的段落:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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-lib来解析它,例如newtonsoft,它在nuget上。
如果您事先知道期望什么样的字符串对,那么可以将其强制转换为一个已定义的类。否则,将其强制转换为动态(如果.NET版本对于动态来说太旧,则将其强制转换为字典),然后从中继续。
使用
1 | string[] paragraph =yourString.Split(","); |
尝试使用双引号作为转义字符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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"; |
号