2

我正在编写一个程序来解析几个分隔的平面文件,它需要几个列。如果将来更改输入平面文件的格式,我不确定使我的代码易于维护/更新的最佳方法。

目前我有一组常量整数形式(还有更多):

NameListFirstNameCol = 0; 
NameListLastNameCol = 1; 
NameListAgeCol = 2; 
ClassListRoomNumCol = 0; 
ClassListRoomNameCol = 1;

以及用于分隔符的常量,例如:

NameListDelim = ',';
ClassListDelim = '\t';

我想看看是否有人对跟踪此类信息的更好方法提出建议。(我可以假设我需要的列将始终在输入中,但输入的创建者可能会更改分隔符、添加新列或重新排序列)。这是一个数据分析脚本,它会看到一些重用,但不是生产软件的主要部分。

4

3 回答 3

0

这里有一些有趣的信息:

使用 Schema.ini 将 CSV 文件导入数据库

特别是“每次使用不同的 CSV 文件名导入 CSV 文件”或“动态创建 Schema.ini 文件”部分可能看起来很有希望。

于 2012-12-12T21:33:18.677 回答
0

首先,您必须从文件中创建一个包含字段名称和相应索引的列表。

例如 Dictionary< string, int > 用于保留您可以从文件第一行读取的名称。拥有列名和相应索引的列表,您可以使用string.Split仅使用您需要的索引来解析以下行。

您还必须存储结构所需的列列表。为了便于维护,您可以将其作为单独的 .cs 文件中的单独类保存。

于 2012-12-12T21:44:18.280 回答
0

我编写了一个名为JRecordBind的库,它使用 XML Schema 描述平面文件的结构。请参阅其中一个示例

不幸的是,它是用 Java 编写的。你可以考虑移植它。如果有 C# 版本就好了

于 2012-12-13T11:16:23.047 回答