2010-10-12 42 views
-1

比方说,我有这样的对象:字符串转换为模拟

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对象的集合?这个集合的顺序并不重要。

+0

这是一个正确的解释说,该文件是位置的“价值”你想存储在名称属性是第三的位置,价值如果第五,并且别名是第七? – 2010-10-12 04:43:02

+0

如果更多的数据可能不存在,您可能会对此感到困惑。你想要位置,还是你想要基于令牌?给我们一个或两个例子,告诉我们结果应该是什么。 – SamStephens 2010-10-12 04:50:33

+0

如何判断垃圾和数据? – 2010-10-12 05:50:19

回答

0

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

  1. 你能改变文件格式吗?
  2. 有没有办法,你可以为键/值对指定一个单独的分隔符? {value:垃圾,别名:someotherGarbage},{value:secondGarbage ....}
  3. 行(Environment.NewLine)是分组唯一的方式吗?

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

如果2的答案是真的, 那么你可以看看手动解析文件使用正则表达式或逐行读取线,只是在寻找价值:然后假定下一个项目是“价值”

如果3的答案是真的, 可能相同的答案为2

我希望这有助于。