Ero*_*ocM 6 c# parsing flat-file
我有一个看起来像这样的文件:
|29923C|SomeGuy,NameHere1 |00039252|042311|Some Address Info Here |
|47422K|SomeGuy,NameHere2 |00039252|042311|Some Address Info Here |
|98753D|SomeGuy,NameHere3 |00039252|042311|Some Address Info Here |
|29923C|SomeGuy,NameHere4 |00039252|042311|Some Address Info Here |
|47422K|SomeGuy,NameHere5 |00039252|042311|Some Address Info Here |
Run Code Online (Sandbox Code Playgroud)
我需要根据从位置2开始的前6个字符将文件分成多个文件.
文件1名为29923c.asc:
|29923C|SomeGuy,NameHere1 |00039252|042311|Some Address Info Here |
|29923C|SomeGuy,NameHere4 |00039252|042311|Some Address Info Here |
Run Code Online (Sandbox Code Playgroud)
文件2名为47422K.asc:
|47422K|SomeGuy,NameHere5 |00039252|042311|Some Address Info Here |
|47422K|SomeGuy,NameHere2 |00039252|042311|Some Address Info Here |
Run Code Online (Sandbox Code Playgroud)
文件3名为9875D.asc:
|98753D|SomeGuy,NameHere3 |00039252|042311|Some Address Info Here |
Run Code Online (Sandbox Code Playgroud)
我不知道在程序获取之前文件中会有什么,只是格式.6位数将根据客户的不同而有所变化.我不知道他们会是什么.
我唯一知道的是格式.
任何人都可以给我一个建议,如何动态获取\维护这些信息,以便我可以解析为单个文件?
逐行阅读。从每一行获取代码并创建文件,将以代码作为键将对打开的文件流的引用放入字典中。在下一行检查字典中的密钥并使用打开的流或创建新的流。读取所有文件后关闭所有流。
如果文件行的大小很大,则该算法将防止文件行使用过多的内存。
例如,为了解析每一行,您可以简单地使用 RegEx。