Java格式字符串间距

时间:2015-12-05 23:42:03

标签: java formatting format string-formatting

我一直在浏览论坛,找到一个确切的答案,但一直无法这样做。这是我的代码:

String item = String.format("%-6s $%-6.2f Number in Inventory: %-3d", this.getBarcode(), this.getPrice(), this.getInventory());

输入的两个项目的输出如下:

DR4423 $700.04 Number in Inventory: 24 
LD342  $1234.24 Number in Inventory: 425

输出应该如下所示,在库存中的数字的价格中有一个额外的字符空间排列:

DR4423 $ 700.04 Number in Inventory: 24 
LD342  $1234.24 Number in Inventory: 425

如何制作"库存编号"排队?看起来示例中的第一项丢失了一个空字符空间,因为它只有5位而不是6位数。在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

我认为您需要使用:

String.format("%-6s $%-7.2f Number in Inventory: %-3d", this.getBarcode(), this.getPrice(), this.getInventory());

或者,如果您希望将空间添加到前面:

String.format("%-6s $%#7.2f Number in Inventory: %-3d", this.getBarcode(), this.getPrice(), this.getInventory());

请注意%-7而不是%-6。该期间计为一个字符。

答案 1 :(得分:1)

在价格和“数字”之间插入\t应该可以正常使用。

答案 2 :(得分:1)

-中的

%-6.2f表示您希望传递的数字与左对齐,例如:

|123,45|
|123,40|
|123,00|
|12,00 |
|1,00  |

如果您想将您的号码对齐如下:

|123,45|
|123,40|
|123,00|
| 12,00|
|  1,00|

然后只需删除此-

您应该也应该将最小使用长度设置为7,因为.也需要一些空间,这意味着要生成

| 700.04|
 1234567

你需要7个字符。

请尝试使用%-6s $%7.2f Number in Inventory: %-3d