从文件c#中读取结构

时间:2013-04-01 15:27:07

标签: c# arrays string-split

我正试图以某种方式阅读文本文件的结构。文本文件是一种用户友好的配置文件。

文件的当前结构(必要时可以更改结构):

info1=exampleinfo
info2=exampleinfo2
info3="example","example2","example3"
info4="example","example2","example3"

获得前两行没有真正的困难,但后两者更难。我需要把它们放在两个单独的字符串数组中,我可以使用它。我可以使用拆分字符串,但问题是在info4数组中,值可以包含逗号(这是所有用户输入)。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您在编写解析器时遇到问题的原因是您没有从文件格式的良好定义开始。如果有逗号,您应该决定如何使用逗号正确编码值,而不是询问如何解析它。然后解析很简单。

如果此文件是由不能使用复杂格式(如json)信任的非技术用户编写的,请考虑以下格式:

info1=exampleinfo
info2=exampleinfo2
info3=example
    example2
    example3
info4=example
    example2
    example3

也就是说,不要乱用引号和逗号。用户非常了解换行符和空格。

答案 1 :(得分:0)

我100%赞成@ DavidHeffernan的解决方案,JSON会很棒。和@ ScottMermelstein建立输出程序的解决方案 - 如果可能的话,这可能是你最好的选择,即使他们想要也不会让用户犯错误。

但是,如果您需要它们来构建文本文件,并且您正在与不能信任的用户合作放置有效的JSON,因为它是一种挑剔的格式,可能会尝试使用不会被使用的分隔符由用户来分隔值。

例如,管道总是很好,因为几乎没有人使用它们:

info1=exampleinfo
info2=exampleinfo2
info3=example|example2|example3
info4=example|exam,ple2|example3

您需要的只是一条规则,说明他们的数据不能包含管道。用户很可能会对此感到满意。