【问题标题】:Convert string to model将字符串转换为模型
【发布时间】:2010-10-12 04:37:00
【问题描述】:

假设我有这个对象:

public struct Line
{
    public string Name { get; set; }
    public int Value { get; set; }
    public string Alias { get; set; }
}

我有一个文件,其中包含以下语法:

garbagedata|moregarbagedata|Name|garbagedata3|Value|garbagedatamaximums|Alias\n

请注意,moregarbagedata[x] 可能存在也可能不存在。需要正则表达式来提取组值。

将此文件的行转换为Line 对象集合的最简单和最有效的方法是什么?此集合的顺序无关紧要。

【问题讨论】:

  • 如果说文件是位置性的,您希望存储在 Name 属性中的“值”是第 3 个位置,如果是第 5 个则为 Value,而 Alias 是第 7 个位置,这是否正确解释?
  • 如果更多的垃圾数据可能不存在,你会感到困惑。你想要位置,还是你想要基于令牌?给我们举一两个例子,告诉我们结果应该是什么。
  • 如何区分垃圾和数据?

标签: c# parsing dynamic binding


【解决方案1】:

在我看来,这里有几个问题需要问。

  1. 可以更改文件格式吗?
  2. 有没有办法,可以为键/值对指定单独的分隔符? {value:garbage,alias:someotherGarbage},{value:secondGarbage....}
  3. 行 (Environment.NewLine) 是分隔数据包的唯一方法吗?

如果1的答案是真的, 然后你可以使用 XmlSerializer 和序列化和反序列化你的对象来回。

如果 2 的答案是真的, 那么您可以查看使用正则表达式手动解析文件或逐行读取并仅查找 Value: 然后假设下一项是“Value”的值

如果 3 的答案是真的, 可能和2一样的答案。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-12-03
    • 1970-01-01
    • 2015-05-24
    相关资源
    最近更新 更多