打印出记录的好方法

时间:2013-01-07 21:13:53

标签: java parsing

我正在为我的公司编写一个文件转换程序,它从源文件中获取数据并将一堆分隔的记录写入目标文件。记录的格式为:

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语句。如果有人知道更好,更优雅的方式,我很乐意听到它。

编辑:澄清了伪代码块

1 个答案:

答案 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();

这样,如果你有一个标题,它只会打印一个“*”。