我正在处理一个特定的场景,我必须从文本文件中读取,解析它,从中提取有意义的信息,使用信息执行 SQL 查询,然后生成一个响应输出文件。
我有大约 3000 行代码。一切都按预期工作。然而,我一直在想一个可能会扰乱我的项目的难题。
正在读取的文本文件(我们称之为 Text.txt)可能由单行或多行组成。
在我的例子中,一条“线”由它的段名称标识——比如 ISA、BHT、HB、NM1 等……每个段的结尾都由一个特殊字符“~”标识。
现在,如果文件由多行组成(每行对应一个段);说:-
ISA.......~
NM1.......~
DMG.......~
瑟…………~
等等....然后我的代码基本上读取每个“行”(即每个段),一次一个,并使用以下命令将其存储到临时缓冲区中:-
ReadLn(myFile,buffer);
然后根据每一行执行评估。产生所需的输出。没问题。
但是问题是...如果文件仅包含一行(由多个段组成)怎么办,表示为:-
ISA....... ~NM1....... ~DMG....... ~SE........ ~
然后使用我的 ReadLine 命令,我一次读取整行而不是每个段。这不适用于我的代码。
我正在考虑创建一个 if,else 语句对......这取决于我的 Txt.txt 文件包含多少行......例如:-
if line = 1:- 然后一次提取每个段...由特殊字符“~”分隔执行必要的任务(3000 行代码) else if line > 1:- 然后一次提取每一行(对应于每个段)执行必要的任务(3000 行代码)。
现在 3000 行代码重复了两次,我觉得复制和粘贴所有代码两次并不优雅。
如果我能得到一些关于如何解决这个问题的反馈,我将不胜感激,这样,无论是单行文件还是多行文件......当我继续评估时,我一次只使用一个段。