如何逐行将段落解析为数组?

时间:2016-09-21 14:26:02

标签: c# arrays parsing paragraph

如果我有这样的段落:

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 个答案:

答案 0 :(得分:0)

使用String.Split功能

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

尝试使用双引号作为转义字符

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";

答案 1 :(得分:0)

我发现格式与JSON非常相似,尽管还有其他分隔符。

因此,解决它的一种方法是将其转换为JSON:

  • 将所有“:=”替换为“=”
  • 用{和}
  • 替换(和)
  • 替换,用;
  • 删除MODULE标签

然后你可以使用JSON lib解析它,例如NewtonSoft,它位于NuGet上。

如果您事先知道要预期的字符串对,可以将其转换为已定义的类。否则,将其转换为动态(或者如果您的.NET版本对于动态来说太旧了,则转换为字典)并从那里继续。