0

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

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

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

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

如何解决这个问题?

4

2 回答 2

1

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

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

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

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

于 2013-04-01T16:40:38.603 回答
0

我 100% 赞成 @DavidHeffernan 的解决方案,JSON 会很棒。和@ScottMermelstein 的构建输出的程序的解决方案——如果可能的话,这可能是你最好的选择,即使用户愿意,也不允许用户犯错误。

但是,如果您需要它们来构建文本文件,并且您正在与无法信任的用户一起使用有效的 JSON,因为它是一种挑剔的格式,也许可以尝试一个不会被用户使用的分隔符, 来分隔值。

例如,管道总是好的,因为实际上没有人使用它们:

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

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

于 2013-04-01T15:33:37.397 回答