我正在寻找关于将CSV(逗号分隔值)表保存在内存中的最合适数据结构的建议。它应该涵盖两种情况:带有和不带标题的表格。 如果表中包含标题,则所有行的所有字段都由键 - 值对确定,其中键是标题中的名称,值是字段的适当内容。 如果表不包含标题,则行只是字符串列表,或者也包含生成键名的键 - 值对(如'COL1','COL2',...'COLn')。CSV表最合适的数据结构?
我正在寻找最简单(少代码)和最通用的解决方案在同一时间。
我在想下面的子类,但是怀疑它的实现的正确/有效的方法:
TCSV = class (TObjectList<TDictionary<string, string>>)
...
public
constructor Create(fileName: string; header: Boolean; encoding: string = '';
delimiter: Char = ';'; quoteChar: Char = '"'); overload;
...
end;
它看起来像我必须保持键字段的每一行。那么TDictionary<string, TStringList>
?这会是一个更好的解决方案吗?
看起来有点像我的2D阵列........ –
但是数组只能有一个整数索引。他希望能够按列名引用字段。 –
@kenneth通过构建索引来解决这个问题 –