我正在为我的公司编写一个文件转换程序,它从源文件中获取数据并将一堆分隔的记录写入目标文件。记录的格式为:
HEADER * REC 1 * REC 2 * REC 3 * REC 4
如果记录为空,并且可以在其后面有另一条记录,则不会打印该值,但会包含分隔符,例如:
HEADER * REC 1 ** REC 3 * REC 4
如果记录为空,并且它是系列中的最后一条记录,则省略值和分隔符,例如:
HEADER * REC 1 * REC 2 * REC 3
我试图想出一种在代码中描述这个的好方法,而不是(伪代码):
if last record is empty
print this
otherwise
print this other thing
我猜代码不是太难看,但我想要一个更好的解决方案。我正在使用StringBuilder为每个事务写入数据(每组记录对应一个事务,所以我可以迭代一个TransactionSet对象。),如果可以的话,我会尽量避免使用大量的switch / if语句。如果有人知道更好,更优雅的方式,我很乐意听到它。
编辑:澄清了伪代码块答案 0 :(得分:1)
你可以这样做
System.out.print("HEADER");
StringBuilder sep = new StringBuilder();
for(String rec: headings) {
sep.append("*");
if(rec != null && !rec.isEmpty()) {
System.out.print(sep + rec);
sep.setLength(0);
}
}
System.out.println();
这样,如果你有一个标题,它只会打印一个“*”。