0

我正在为我的公司编写一个文件翻译器,它从源文件中获取数据并将一堆分隔记录写入目标文件。记录具有以下形式:

标题*录音 1*录音 2*录音 3*录音 4

如果一条记录为空,并且后面可以有另一条记录,则不打印该值,但包含分隔符,例如:

标题*记录 1**记录 3*记录 4

如果记录为空,并且是系列中的最后一条记录,则省略值和分隔符,例如:

标题*记录 1*记录 2*记录 3

除了(伪代码)之外,我试图想出一种在代码中描述这一点的好方法:

if last record is empty
    print this
otherwise
    print this other thing

我想代码并不太难看,但我想要一个更好的解决方案。我正在使用 StringBuilder 为每个事务编写数据(每组记录对应一个事务,因此我可以遍历 TransactionSet 对象。),如果可以的话,我会尽量避免使用大量的 switch/if 语句。如果有人知道更好或更优雅的方式来做到这一点,我很想听听。

编辑:澄清的伪代码块

4

1 回答 1

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

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

于 2013-01-07T21:17:24.113 回答