【问题标题】:Java Format String SpacingJava 格式字符串间距
【发布时间】:2015-12-05 23:42:03
【问题描述】:

我一直在通过论坛寻找确切的答案,但一直无法做到。这是我的代码:

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

输出应如下所示,在价格中为 Number in Inventory 排列一个额外的字符空间:

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

如何排列“库存中的数量”?看起来示例中的第一项丢失了一个空字符空间,因为它只有 5 位数字而不是 6 位的价格。提前感谢您的帮助。

【问题讨论】:

  • 我需要正好有 6 个字符空格作为价格。编辑问题以显示预期输出。

标签: java formatting format string-formatting


【解决方案1】:

我认为你需要使用:

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。句点计为一个字符。

【讨论】:

  • 这与 \t 的工作方式类似,但制表符中没有多余的空格。很好的答案,但我正在寻找 $ 符号后的空格。
  • @javanewb2.0 尝试使用散列 # 而不是破折号 -。 :)
  • 哈希 # 完全符合我的需要。谢谢!
【解决方案2】:

%-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

【讨论】:

    【解决方案3】:

    在价格和“数字”之间插入一个\t 应该可以正常工作。

    【讨论】:

    • 这符合我预期的输出结果,但我错过了一个空格。当价格没有 6 位数字时,我对其进行了更新,以在 $ 和价格之间放置一个空格。这就是我希望对其进行格式化的方式。
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多