我正在编写一个小类来读取文件中的键值对列表并写入Dictionary< string,string>.此文件将具有以下格式:
key1:value1 key2:value2 key3:value3 ...
这应该很容易,但是由于用户要手动编辑这个文件,我应该如何处理空格,制表符,额外的行跳转等等?我可以使用Replace删除空格和制表符,但是,是否还有其他“隐形”字符我缺少?
或者我可以删除所有不是字母数字的字符,“:”和行跳转(因为行跳转是将一对与另一对分开),然后删除所有额外的行跳转.如果是这样,我不知道如何删除“all-except-some”字符.
当然我也可以查看“key1:value1:somethingelse”之类的错误.但是这样的东西并不重要,因为它显然是用户的错,我只会显示“无效格式”消息.我只是想处理基本的东西,然后把所有这些都放在try / catch块中以防万一其他出错.
注意:我根本不需要任何空格,即使在键或值内也是如此.
解决方法
要求太模糊了.考虑:
“什么时候空间是一个价值?关键?”
“分隔符什么时候是值?键?”
“标签何时是值?键?”
“当在值?键的上下文中使用分隔符时,值何处结束”?
这些问题将导致代码填写一次性和糟糕的用户体验.这就是我们有语言规则/语法的原因.
定义一个简单的语法并消除大部分的猜测.
“{核心价值}”,
在这里,您有一个键/值对包含在引号内,并通过分隔符(,)分隔.所有无关的字符都可以忽略.您可以使用XML,但这可能会吓跑不太熟练的用户.
注意,引号是任意的.随意更换任何不需要太多转移的集合容器(只要注意复杂性).
就个人而言,我会将其包装在一个简单的UI中,并将数据序列化为XML.有时候不这样做,但你没有给我任何理由.