【问题标题】:Text File Mapping文本文件映射
【发布时间】:2012-01-14 08:09:30
【问题描述】:

我有一个文本文件总是以相同的文本格式出现(我没有文本文件的 xsd)。

我想将其中的数据映射到某个类。

除了开始编写字符串解析器或一些复杂的正则表达式之外,是否有一些标准方法。

我真的不想使用文本解析器,因为我们有几个人在做这件事,而且我们每个人都可能需要时间来了解对方在做什么。

Example

谢谢。

【问题讨论】:

  • 你应该发布一个示例文本文件的内容,或者链接到它。
  • @Moozhe 你说得对,我加了一个例子

标签: c# .net text-parsing


【解决方案1】:

如果您有特殊格式,您肯定需要自己的解析器

如果格式是标准格式,如 xml、yml、json、csv 等,解析库将始终以您的语言提供。

更新

从您提供的示例看来,格式更像 INI 文件,但条目是自定义的。也许你可以扩展 NINI

【讨论】:

    【解决方案2】:

    解决方案:

    1. 将该文件的格式更改为标准格式,例如制表符分隔或逗号分隔的 csv 文件。
    2. 然后使用许多库来读取这些文件或将其导入数据库并使用 ORM(如 Entity Framework)来读取它们

    【讨论】:

      【解决方案3】:

      假设您无法将传入的文件格式更改为更机器可读的格式,那么您可能需要编写自己的自定义解析器。最好的方法是创建类来表示和存储所有不同类型的数据,为每个字段使用适当的数据格式(自定义枚举、日期时间、版本等)

      尝试划分代码。例如,在此处采用这些行:

      272 298 9.663 18.665 -90.000 48 0 13 2 10 5 20009 1 2 1 257 "C4207" 0 0 1000 0 0
      

      这可以是单个类或结构。它的构造函数可以接受上述字符串作为参数,并且每个值都可以解析为不同的本地成员。同一个类可以有一个 Save() 或 ToString() 方法,如果需要,可以将所有值转换回字符串。

      然后父类将简单地包含上述结构的数组,基于文件中有多少条目。

      【讨论】:

        猜你喜欢
        • 2011-12-04
        • 2015-01-01
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        相关资源
        最近更新 更多